• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
10 # define MAXSTACK 6000
11 static const int n_keyword_lists = 9;
12 static KeywordToken *reserved_keywords[] = {
13     (KeywordToken[]) {{NULL, -1}},
14     (KeywordToken[]) {{NULL, -1}},
15     (KeywordToken[]) {
16         {"if", 510},
17         {"in", 518},
18         {"as", 520},
19         {"is", 530},
20         {"or", 531},
21         {NULL, -1},
22     },
23     (KeywordToken[]) {
24         {"del", 503},
25         {"try", 511},
26         {"for", 517},
27         {"def", 526},
28         {"not", 529},
29         {"and", 532},
30         {NULL, -1},
31     },
32     (KeywordToken[]) {
33         {"pass", 502},
34         {"from", 514},
35         {"elif", 515},
36         {"else", 516},
37         {"with", 519},
38         {"None", 523},
39         {"True", 524},
40         {NULL, -1},
41     },
42     (KeywordToken[]) {
43         {"raise", 501},
44         {"yield", 504},
45         {"break", 506},
46         {"while", 512},
47         {"False", 525},
48         {"class", 527},
49         {NULL, -1},
50     },
51     (KeywordToken[]) {
52         {"return", 500},
53         {"assert", 505},
54         {"global", 508},
55         {"import", 513},
56         {"except", 521},
57         {"lambda", 528},
58         {NULL, -1},
59     },
60     (KeywordToken[]) {
61         {"finally", 522},
62         {NULL, -1},
63     },
64     (KeywordToken[]) {
65         {"continue", 507},
66         {"nonlocal", 509},
67         {NULL, -1},
68     },
69 };
70 static char *soft_keywords[] = {
71     "_",
72     "case",
73     "match",
74     NULL,
75 };
76 #define file_type 1000
77 #define interactive_type 1001
78 #define eval_type 1002
79 #define func_type_type 1003
80 #define fstring_type 1004
81 #define type_expressions_type 1005
82 #define statements_type 1006
83 #define statement_type 1007
84 #define statement_newline_type 1008
85 #define simple_stmts_type 1009
86 #define simple_stmt_type 1010
87 #define compound_stmt_type 1011
88 #define assignment_type 1012
89 #define augassign_type 1013
90 #define global_stmt_type 1014
91 #define nonlocal_stmt_type 1015
92 #define yield_stmt_type 1016
93 #define assert_stmt_type 1017
94 #define del_stmt_type 1018
95 #define import_stmt_type 1019
96 #define import_name_type 1020
97 #define import_from_type 1021
98 #define import_from_targets_type 1022
99 #define import_from_as_names_type 1023
100 #define import_from_as_name_type 1024
101 #define dotted_as_names_type 1025
102 #define dotted_as_name_type 1026
103 #define dotted_name_type 1027  // Left-recursive
104 #define if_stmt_type 1028
105 #define elif_stmt_type 1029
106 #define else_block_type 1030
107 #define while_stmt_type 1031
108 #define for_stmt_type 1032
109 #define with_stmt_type 1033
110 #define with_item_type 1034
111 #define try_stmt_type 1035
112 #define except_block_type 1036
113 #define finally_block_type 1037
114 #define match_stmt_type 1038
115 #define subject_expr_type 1039
116 #define case_block_type 1040
117 #define guard_type 1041
118 #define patterns_type 1042
119 #define pattern_type 1043
120 #define as_pattern_type 1044
121 #define or_pattern_type 1045
122 #define closed_pattern_type 1046
123 #define literal_pattern_type 1047
124 #define literal_expr_type 1048
125 #define complex_number_type 1049
126 #define signed_number_type 1050
127 #define signed_real_number_type 1051
128 #define real_number_type 1052
129 #define imaginary_number_type 1053
130 #define capture_pattern_type 1054
131 #define pattern_capture_target_type 1055
132 #define wildcard_pattern_type 1056
133 #define value_pattern_type 1057
134 #define attr_type 1058  // Left-recursive
135 #define name_or_attr_type 1059  // Left-recursive
136 #define group_pattern_type 1060
137 #define sequence_pattern_type 1061
138 #define open_sequence_pattern_type 1062
139 #define maybe_sequence_pattern_type 1063
140 #define maybe_star_pattern_type 1064
141 #define star_pattern_type 1065
142 #define mapping_pattern_type 1066
143 #define items_pattern_type 1067
144 #define key_value_pattern_type 1068
145 #define double_star_pattern_type 1069
146 #define class_pattern_type 1070
147 #define positional_patterns_type 1071
148 #define keyword_patterns_type 1072
149 #define keyword_pattern_type 1073
150 #define return_stmt_type 1074
151 #define raise_stmt_type 1075
152 #define function_def_type 1076
153 #define function_def_raw_type 1077
154 #define func_type_comment_type 1078
155 #define params_type 1079
156 #define parameters_type 1080
157 #define slash_no_default_type 1081
158 #define slash_with_default_type 1082
159 #define star_etc_type 1083
160 #define kwds_type 1084
161 #define param_no_default_type 1085
162 #define param_with_default_type 1086
163 #define param_maybe_default_type 1087
164 #define param_type 1088
165 #define annotation_type 1089
166 #define default_type 1090
167 #define decorators_type 1091
168 #define class_def_type 1092
169 #define class_def_raw_type 1093
170 #define block_type 1094
171 #define star_expressions_type 1095
172 #define star_expression_type 1096
173 #define star_named_expressions_type 1097
174 #define star_named_expression_type 1098
175 #define assignment_expression_type 1099
176 #define named_expression_type 1100
177 #define annotated_rhs_type 1101
178 #define expressions_type 1102
179 #define expression_type 1103
180 #define lambdef_type 1104
181 #define lambda_params_type 1105
182 #define lambda_parameters_type 1106
183 #define lambda_slash_no_default_type 1107
184 #define lambda_slash_with_default_type 1108
185 #define lambda_star_etc_type 1109
186 #define lambda_kwds_type 1110
187 #define lambda_param_no_default_type 1111
188 #define lambda_param_with_default_type 1112
189 #define lambda_param_maybe_default_type 1113
190 #define lambda_param_type 1114
191 #define disjunction_type 1115
192 #define conjunction_type 1116
193 #define inversion_type 1117
194 #define comparison_type 1118
195 #define compare_op_bitwise_or_pair_type 1119
196 #define eq_bitwise_or_type 1120
197 #define noteq_bitwise_or_type 1121
198 #define lte_bitwise_or_type 1122
199 #define lt_bitwise_or_type 1123
200 #define gte_bitwise_or_type 1124
201 #define gt_bitwise_or_type 1125
202 #define notin_bitwise_or_type 1126
203 #define in_bitwise_or_type 1127
204 #define isnot_bitwise_or_type 1128
205 #define is_bitwise_or_type 1129
206 #define bitwise_or_type 1130  // Left-recursive
207 #define bitwise_xor_type 1131  // Left-recursive
208 #define bitwise_and_type 1132  // Left-recursive
209 #define shift_expr_type 1133  // Left-recursive
210 #define sum_type 1134  // Left-recursive
211 #define term_type 1135  // Left-recursive
212 #define factor_type 1136
213 #define power_type 1137
214 #define await_primary_type 1138
215 #define primary_type 1139  // Left-recursive
216 #define slices_type 1140
217 #define slice_type 1141
218 #define atom_type 1142
219 #define strings_type 1143
220 #define list_type 1144
221 #define listcomp_type 1145
222 #define tuple_type 1146
223 #define group_type 1147
224 #define genexp_type 1148
225 #define set_type 1149
226 #define setcomp_type 1150
227 #define dict_type 1151
228 #define dictcomp_type 1152
229 #define double_starred_kvpairs_type 1153
230 #define double_starred_kvpair_type 1154
231 #define kvpair_type 1155
232 #define for_if_clauses_type 1156
233 #define for_if_clause_type 1157
234 #define yield_expr_type 1158
235 #define arguments_type 1159
236 #define args_type 1160
237 #define kwargs_type 1161
238 #define starred_expression_type 1162
239 #define kwarg_or_starred_type 1163
240 #define kwarg_or_double_starred_type 1164
241 #define star_targets_type 1165
242 #define star_targets_list_seq_type 1166
243 #define star_targets_tuple_seq_type 1167
244 #define star_target_type 1168
245 #define target_with_star_atom_type 1169
246 #define star_atom_type 1170
247 #define single_target_type 1171
248 #define single_subscript_attribute_target_type 1172
249 #define del_targets_type 1173
250 #define del_target_type 1174
251 #define del_t_atom_type 1175
252 #define t_primary_type 1176  // Left-recursive
253 #define t_lookahead_type 1177
254 #define invalid_arguments_type 1178
255 #define invalid_kwarg_type 1179
256 #define expression_without_invalid_type 1180
257 #define invalid_legacy_expression_type 1181
258 #define invalid_expression_type 1182
259 #define invalid_named_expression_type 1183
260 #define invalid_assignment_type 1184
261 #define invalid_ann_assign_target_type 1185
262 #define invalid_del_stmt_type 1186
263 #define invalid_block_type 1187
264 #define invalid_comprehension_type 1188
265 #define invalid_dict_comprehension_type 1189
266 #define invalid_parameters_type 1190
267 #define invalid_parameters_helper_type 1191
268 #define invalid_lambda_parameters_type 1192
269 #define invalid_lambda_parameters_helper_type 1193
270 #define invalid_star_etc_type 1194
271 #define invalid_lambda_star_etc_type 1195
272 #define invalid_double_type_comments_type 1196
273 #define invalid_with_item_type 1197
274 #define invalid_for_target_type 1198
275 #define invalid_group_type 1199
276 #define invalid_import_from_targets_type 1200
277 #define invalid_with_stmt_type 1201
278 #define invalid_with_stmt_indent_type 1202
279 #define invalid_try_stmt_type 1203
280 #define invalid_except_stmt_type 1204
281 #define invalid_finally_stmt_type 1205
282 #define invalid_except_stmt_indent_type 1206
283 #define invalid_match_stmt_type 1207
284 #define invalid_case_block_type 1208
285 #define invalid_as_pattern_type 1209
286 #define invalid_class_pattern_type 1210
287 #define invalid_class_argument_pattern_type 1211
288 #define invalid_if_stmt_type 1212
289 #define invalid_elif_stmt_type 1213
290 #define invalid_else_stmt_type 1214
291 #define invalid_while_stmt_type 1215
292 #define invalid_for_stmt_type 1216
293 #define invalid_def_raw_type 1217
294 #define invalid_class_def_raw_type 1218
295 #define invalid_double_starred_kvpairs_type 1219
296 #define invalid_kvpair_type 1220
297 #define _loop0_1_type 1221
298 #define _loop0_2_type 1222
299 #define _loop0_4_type 1223
300 #define _gather_3_type 1224
301 #define _loop0_6_type 1225
302 #define _gather_5_type 1226
303 #define _loop0_8_type 1227
304 #define _gather_7_type 1228
305 #define _loop0_10_type 1229
306 #define _gather_9_type 1230
307 #define _loop1_11_type 1231
308 #define _loop0_13_type 1232
309 #define _gather_12_type 1233
310 #define _tmp_14_type 1234
311 #define _tmp_15_type 1235
312 #define _tmp_16_type 1236
313 #define _tmp_17_type 1237
314 #define _tmp_18_type 1238
315 #define _tmp_19_type 1239
316 #define _tmp_20_type 1240
317 #define _tmp_21_type 1241
318 #define _loop1_22_type 1242
319 #define _tmp_23_type 1243
320 #define _tmp_24_type 1244
321 #define _loop0_26_type 1245
322 #define _gather_25_type 1246
323 #define _loop0_28_type 1247
324 #define _gather_27_type 1248
325 #define _tmp_29_type 1249
326 #define _tmp_30_type 1250
327 #define _loop0_31_type 1251
328 #define _loop1_32_type 1252
329 #define _loop0_34_type 1253
330 #define _gather_33_type 1254
331 #define _tmp_35_type 1255
332 #define _loop0_37_type 1256
333 #define _gather_36_type 1257
334 #define _tmp_38_type 1258
335 #define _loop0_40_type 1259
336 #define _gather_39_type 1260
337 #define _loop0_42_type 1261
338 #define _gather_41_type 1262
339 #define _loop0_44_type 1263
340 #define _gather_43_type 1264
341 #define _loop0_46_type 1265
342 #define _gather_45_type 1266
343 #define _tmp_47_type 1267
344 #define _loop1_48_type 1268
345 #define _tmp_49_type 1269
346 #define _loop1_50_type 1270
347 #define _loop0_52_type 1271
348 #define _gather_51_type 1272
349 #define _tmp_53_type 1273
350 #define _tmp_54_type 1274
351 #define _tmp_55_type 1275
352 #define _tmp_56_type 1276
353 #define _loop0_58_type 1277
354 #define _gather_57_type 1278
355 #define _loop0_60_type 1279
356 #define _gather_59_type 1280
357 #define _tmp_61_type 1281
358 #define _loop0_63_type 1282
359 #define _gather_62_type 1283
360 #define _loop0_65_type 1284
361 #define _gather_64_type 1285
362 #define _tmp_66_type 1286
363 #define _tmp_67_type 1287
364 #define _tmp_68_type 1288
365 #define _tmp_69_type 1289
366 #define _loop0_70_type 1290
367 #define _loop0_71_type 1291
368 #define _loop0_72_type 1292
369 #define _loop1_73_type 1293
370 #define _loop0_74_type 1294
371 #define _loop1_75_type 1295
372 #define _loop1_76_type 1296
373 #define _loop1_77_type 1297
374 #define _loop0_78_type 1298
375 #define _loop1_79_type 1299
376 #define _loop0_80_type 1300
377 #define _loop1_81_type 1301
378 #define _loop0_82_type 1302
379 #define _loop1_83_type 1303
380 #define _loop1_84_type 1304
381 #define _tmp_85_type 1305
382 #define _loop1_86_type 1306
383 #define _loop0_88_type 1307
384 #define _gather_87_type 1308
385 #define _loop1_89_type 1309
386 #define _loop0_90_type 1310
387 #define _loop0_91_type 1311
388 #define _loop0_92_type 1312
389 #define _loop1_93_type 1313
390 #define _loop0_94_type 1314
391 #define _loop1_95_type 1315
392 #define _loop1_96_type 1316
393 #define _loop1_97_type 1317
394 #define _loop0_98_type 1318
395 #define _loop1_99_type 1319
396 #define _loop0_100_type 1320
397 #define _loop1_101_type 1321
398 #define _loop0_102_type 1322
399 #define _loop1_103_type 1323
400 #define _loop1_104_type 1324
401 #define _loop1_105_type 1325
402 #define _loop1_106_type 1326
403 #define _tmp_107_type 1327
404 #define _loop0_109_type 1328
405 #define _gather_108_type 1329
406 #define _tmp_110_type 1330
407 #define _tmp_111_type 1331
408 #define _tmp_112_type 1332
409 #define _tmp_113_type 1333
410 #define _loop1_114_type 1334
411 #define _tmp_115_type 1335
412 #define _tmp_116_type 1336
413 #define _tmp_117_type 1337
414 #define _loop0_119_type 1338
415 #define _gather_118_type 1339
416 #define _loop1_120_type 1340
417 #define _loop0_121_type 1341
418 #define _loop0_122_type 1342
419 #define _loop0_124_type 1343
420 #define _gather_123_type 1344
421 #define _tmp_125_type 1345
422 #define _loop0_127_type 1346
423 #define _gather_126_type 1347
424 #define _loop0_129_type 1348
425 #define _gather_128_type 1349
426 #define _loop0_131_type 1350
427 #define _gather_130_type 1351
428 #define _loop0_133_type 1352
429 #define _gather_132_type 1353
430 #define _loop0_134_type 1354
431 #define _loop0_136_type 1355
432 #define _gather_135_type 1356
433 #define _loop1_137_type 1357
434 #define _tmp_138_type 1358
435 #define _loop0_140_type 1359
436 #define _gather_139_type 1360
437 #define _tmp_141_type 1361
438 #define _tmp_142_type 1362
439 #define _tmp_143_type 1363
440 #define _tmp_144_type 1364
441 #define _tmp_145_type 1365
442 #define _tmp_146_type 1366
443 #define _tmp_147_type 1367
444 #define _tmp_148_type 1368
445 #define _loop0_149_type 1369
446 #define _loop0_150_type 1370
447 #define _loop0_151_type 1371
448 #define _tmp_152_type 1372
449 #define _tmp_153_type 1373
450 #define _tmp_154_type 1374
451 #define _tmp_155_type 1375
452 #define _loop0_156_type 1376
453 #define _loop1_157_type 1377
454 #define _loop0_158_type 1378
455 #define _loop1_159_type 1379
456 #define _tmp_160_type 1380
457 #define _tmp_161_type 1381
458 #define _tmp_162_type 1382
459 #define _loop0_164_type 1383
460 #define _gather_163_type 1384
461 #define _loop0_166_type 1385
462 #define _gather_165_type 1386
463 #define _loop0_168_type 1387
464 #define _gather_167_type 1388
465 #define _loop0_170_type 1389
466 #define _gather_169_type 1390
467 #define _tmp_171_type 1391
468 #define _tmp_172_type 1392
469 #define _tmp_173_type 1393
470 #define _tmp_174_type 1394
471 #define _tmp_175_type 1395
472 #define _tmp_176_type 1396
473 #define _tmp_177_type 1397
474 #define _loop0_179_type 1398
475 #define _gather_178_type 1399
476 #define _tmp_180_type 1400
477 #define _tmp_181_type 1401
478 #define _tmp_182_type 1402
479 #define _tmp_183_type 1403
480 #define _tmp_184_type 1404
481 #define _tmp_185_type 1405
482 #define _tmp_186_type 1406
483 #define _tmp_187_type 1407
484 #define _tmp_188_type 1408
485 #define _tmp_189_type 1409
486 #define _tmp_190_type 1410
487 #define _tmp_191_type 1411
488 #define _tmp_192_type 1412
489 #define _tmp_193_type 1413
490 #define _tmp_194_type 1414
491 #define _tmp_195_type 1415
492 #define _tmp_196_type 1416
493 #define _tmp_197_type 1417
494 #define _tmp_198_type 1418
495 #define _tmp_199_type 1419
496 #define _tmp_200_type 1420
497 #define _tmp_201_type 1421
498 #define _tmp_202_type 1422
499 #define _tmp_203_type 1423
500 #define _tmp_204_type 1424
501 #define _tmp_205_type 1425
502 #define _tmp_206_type 1426
503 
504 static mod_ty file_rule(Parser *p);
505 static mod_ty interactive_rule(Parser *p);
506 static mod_ty eval_rule(Parser *p);
507 static mod_ty func_type_rule(Parser *p);
508 static expr_ty fstring_rule(Parser *p);
509 static asdl_expr_seq* type_expressions_rule(Parser *p);
510 static asdl_stmt_seq* statements_rule(Parser *p);
511 static asdl_stmt_seq* statement_rule(Parser *p);
512 static asdl_stmt_seq* statement_newline_rule(Parser *p);
513 static asdl_stmt_seq* simple_stmts_rule(Parser *p);
514 static stmt_ty simple_stmt_rule(Parser *p);
515 static stmt_ty compound_stmt_rule(Parser *p);
516 static stmt_ty assignment_rule(Parser *p);
517 static AugOperator* augassign_rule(Parser *p);
518 static stmt_ty global_stmt_rule(Parser *p);
519 static stmt_ty nonlocal_stmt_rule(Parser *p);
520 static stmt_ty yield_stmt_rule(Parser *p);
521 static stmt_ty assert_stmt_rule(Parser *p);
522 static stmt_ty del_stmt_rule(Parser *p);
523 static stmt_ty import_stmt_rule(Parser *p);
524 static stmt_ty import_name_rule(Parser *p);
525 static stmt_ty import_from_rule(Parser *p);
526 static asdl_alias_seq* import_from_targets_rule(Parser *p);
527 static asdl_alias_seq* import_from_as_names_rule(Parser *p);
528 static alias_ty import_from_as_name_rule(Parser *p);
529 static asdl_alias_seq* dotted_as_names_rule(Parser *p);
530 static alias_ty dotted_as_name_rule(Parser *p);
531 static expr_ty dotted_name_rule(Parser *p);
532 static stmt_ty if_stmt_rule(Parser *p);
533 static stmt_ty elif_stmt_rule(Parser *p);
534 static asdl_stmt_seq* else_block_rule(Parser *p);
535 static stmt_ty while_stmt_rule(Parser *p);
536 static stmt_ty for_stmt_rule(Parser *p);
537 static stmt_ty with_stmt_rule(Parser *p);
538 static withitem_ty with_item_rule(Parser *p);
539 static stmt_ty try_stmt_rule(Parser *p);
540 static excepthandler_ty except_block_rule(Parser *p);
541 static asdl_stmt_seq* finally_block_rule(Parser *p);
542 static stmt_ty match_stmt_rule(Parser *p);
543 static expr_ty subject_expr_rule(Parser *p);
544 static match_case_ty case_block_rule(Parser *p);
545 static expr_ty guard_rule(Parser *p);
546 static pattern_ty patterns_rule(Parser *p);
547 static pattern_ty pattern_rule(Parser *p);
548 static pattern_ty as_pattern_rule(Parser *p);
549 static pattern_ty or_pattern_rule(Parser *p);
550 static pattern_ty closed_pattern_rule(Parser *p);
551 static pattern_ty literal_pattern_rule(Parser *p);
552 static expr_ty literal_expr_rule(Parser *p);
553 static expr_ty complex_number_rule(Parser *p);
554 static expr_ty signed_number_rule(Parser *p);
555 static expr_ty signed_real_number_rule(Parser *p);
556 static expr_ty real_number_rule(Parser *p);
557 static expr_ty imaginary_number_rule(Parser *p);
558 static pattern_ty capture_pattern_rule(Parser *p);
559 static expr_ty pattern_capture_target_rule(Parser *p);
560 static pattern_ty wildcard_pattern_rule(Parser *p);
561 static pattern_ty value_pattern_rule(Parser *p);
562 static expr_ty attr_rule(Parser *p);
563 static expr_ty name_or_attr_rule(Parser *p);
564 static pattern_ty group_pattern_rule(Parser *p);
565 static pattern_ty sequence_pattern_rule(Parser *p);
566 static asdl_seq* open_sequence_pattern_rule(Parser *p);
567 static asdl_seq* maybe_sequence_pattern_rule(Parser *p);
568 static pattern_ty maybe_star_pattern_rule(Parser *p);
569 static pattern_ty star_pattern_rule(Parser *p);
570 static pattern_ty mapping_pattern_rule(Parser *p);
571 static asdl_seq* items_pattern_rule(Parser *p);
572 static KeyPatternPair* key_value_pattern_rule(Parser *p);
573 static expr_ty double_star_pattern_rule(Parser *p);
574 static pattern_ty class_pattern_rule(Parser *p);
575 static asdl_pattern_seq* positional_patterns_rule(Parser *p);
576 static asdl_seq* keyword_patterns_rule(Parser *p);
577 static KeyPatternPair* keyword_pattern_rule(Parser *p);
578 static stmt_ty return_stmt_rule(Parser *p);
579 static stmt_ty raise_stmt_rule(Parser *p);
580 static stmt_ty function_def_rule(Parser *p);
581 static stmt_ty function_def_raw_rule(Parser *p);
582 static Token* func_type_comment_rule(Parser *p);
583 static arguments_ty params_rule(Parser *p);
584 static arguments_ty parameters_rule(Parser *p);
585 static asdl_arg_seq* slash_no_default_rule(Parser *p);
586 static SlashWithDefault* slash_with_default_rule(Parser *p);
587 static StarEtc* star_etc_rule(Parser *p);
588 static arg_ty kwds_rule(Parser *p);
589 static arg_ty param_no_default_rule(Parser *p);
590 static NameDefaultPair* param_with_default_rule(Parser *p);
591 static NameDefaultPair* param_maybe_default_rule(Parser *p);
592 static arg_ty param_rule(Parser *p);
593 static expr_ty annotation_rule(Parser *p);
594 static expr_ty default_rule(Parser *p);
595 static asdl_expr_seq* decorators_rule(Parser *p);
596 static stmt_ty class_def_rule(Parser *p);
597 static stmt_ty class_def_raw_rule(Parser *p);
598 static asdl_stmt_seq* block_rule(Parser *p);
599 static expr_ty star_expressions_rule(Parser *p);
600 static expr_ty star_expression_rule(Parser *p);
601 static asdl_expr_seq* star_named_expressions_rule(Parser *p);
602 static expr_ty star_named_expression_rule(Parser *p);
603 static expr_ty assignment_expression_rule(Parser *p);
604 static expr_ty named_expression_rule(Parser *p);
605 static expr_ty annotated_rhs_rule(Parser *p);
606 static expr_ty expressions_rule(Parser *p);
607 static expr_ty expression_rule(Parser *p);
608 static expr_ty lambdef_rule(Parser *p);
609 static arguments_ty lambda_params_rule(Parser *p);
610 static arguments_ty lambda_parameters_rule(Parser *p);
611 static asdl_arg_seq* lambda_slash_no_default_rule(Parser *p);
612 static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
613 static StarEtc* lambda_star_etc_rule(Parser *p);
614 static arg_ty lambda_kwds_rule(Parser *p);
615 static arg_ty lambda_param_no_default_rule(Parser *p);
616 static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
617 static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
618 static arg_ty lambda_param_rule(Parser *p);
619 static expr_ty disjunction_rule(Parser *p);
620 static expr_ty conjunction_rule(Parser *p);
621 static expr_ty inversion_rule(Parser *p);
622 static expr_ty comparison_rule(Parser *p);
623 static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
624 static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
625 static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
626 static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
627 static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
628 static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
629 static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
630 static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
631 static CmpopExprPair* in_bitwise_or_rule(Parser *p);
632 static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
633 static CmpopExprPair* is_bitwise_or_rule(Parser *p);
634 static expr_ty bitwise_or_rule(Parser *p);
635 static expr_ty bitwise_xor_rule(Parser *p);
636 static expr_ty bitwise_and_rule(Parser *p);
637 static expr_ty shift_expr_rule(Parser *p);
638 static expr_ty sum_rule(Parser *p);
639 static expr_ty term_rule(Parser *p);
640 static expr_ty factor_rule(Parser *p);
641 static expr_ty power_rule(Parser *p);
642 static expr_ty await_primary_rule(Parser *p);
643 static expr_ty primary_rule(Parser *p);
644 static expr_ty slices_rule(Parser *p);
645 static expr_ty slice_rule(Parser *p);
646 static expr_ty atom_rule(Parser *p);
647 static expr_ty strings_rule(Parser *p);
648 static expr_ty list_rule(Parser *p);
649 static expr_ty listcomp_rule(Parser *p);
650 static expr_ty tuple_rule(Parser *p);
651 static expr_ty group_rule(Parser *p);
652 static expr_ty genexp_rule(Parser *p);
653 static expr_ty set_rule(Parser *p);
654 static expr_ty setcomp_rule(Parser *p);
655 static expr_ty dict_rule(Parser *p);
656 static expr_ty dictcomp_rule(Parser *p);
657 static asdl_seq* double_starred_kvpairs_rule(Parser *p);
658 static KeyValuePair* double_starred_kvpair_rule(Parser *p);
659 static KeyValuePair* kvpair_rule(Parser *p);
660 static asdl_comprehension_seq* for_if_clauses_rule(Parser *p);
661 static comprehension_ty for_if_clause_rule(Parser *p);
662 static expr_ty yield_expr_rule(Parser *p);
663 static expr_ty arguments_rule(Parser *p);
664 static expr_ty args_rule(Parser *p);
665 static asdl_seq* kwargs_rule(Parser *p);
666 static expr_ty starred_expression_rule(Parser *p);
667 static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
668 static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
669 static expr_ty star_targets_rule(Parser *p);
670 static asdl_expr_seq* star_targets_list_seq_rule(Parser *p);
671 static asdl_expr_seq* star_targets_tuple_seq_rule(Parser *p);
672 static expr_ty star_target_rule(Parser *p);
673 static expr_ty target_with_star_atom_rule(Parser *p);
674 static expr_ty star_atom_rule(Parser *p);
675 static expr_ty single_target_rule(Parser *p);
676 static expr_ty single_subscript_attribute_target_rule(Parser *p);
677 static asdl_expr_seq* del_targets_rule(Parser *p);
678 static expr_ty del_target_rule(Parser *p);
679 static expr_ty del_t_atom_rule(Parser *p);
680 static expr_ty t_primary_rule(Parser *p);
681 static void *t_lookahead_rule(Parser *p);
682 static void *invalid_arguments_rule(Parser *p);
683 static void *invalid_kwarg_rule(Parser *p);
684 static expr_ty expression_without_invalid_rule(Parser *p);
685 static void *invalid_legacy_expression_rule(Parser *p);
686 static void *invalid_expression_rule(Parser *p);
687 static void *invalid_named_expression_rule(Parser *p);
688 static void *invalid_assignment_rule(Parser *p);
689 static expr_ty invalid_ann_assign_target_rule(Parser *p);
690 static void *invalid_del_stmt_rule(Parser *p);
691 static void *invalid_block_rule(Parser *p);
692 static void *invalid_comprehension_rule(Parser *p);
693 static void *invalid_dict_comprehension_rule(Parser *p);
694 static void *invalid_parameters_rule(Parser *p);
695 static void *invalid_parameters_helper_rule(Parser *p);
696 static void *invalid_lambda_parameters_rule(Parser *p);
697 static void *invalid_lambda_parameters_helper_rule(Parser *p);
698 static void *invalid_star_etc_rule(Parser *p);
699 static void *invalid_lambda_star_etc_rule(Parser *p);
700 static void *invalid_double_type_comments_rule(Parser *p);
701 static void *invalid_with_item_rule(Parser *p);
702 static void *invalid_for_target_rule(Parser *p);
703 static void *invalid_group_rule(Parser *p);
704 static void *invalid_import_from_targets_rule(Parser *p);
705 static void *invalid_with_stmt_rule(Parser *p);
706 static void *invalid_with_stmt_indent_rule(Parser *p);
707 static void *invalid_try_stmt_rule(Parser *p);
708 static void *invalid_except_stmt_rule(Parser *p);
709 static void *invalid_finally_stmt_rule(Parser *p);
710 static void *invalid_except_stmt_indent_rule(Parser *p);
711 static void *invalid_match_stmt_rule(Parser *p);
712 static void *invalid_case_block_rule(Parser *p);
713 static void *invalid_as_pattern_rule(Parser *p);
714 static void *invalid_class_pattern_rule(Parser *p);
715 static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p);
716 static void *invalid_if_stmt_rule(Parser *p);
717 static void *invalid_elif_stmt_rule(Parser *p);
718 static void *invalid_else_stmt_rule(Parser *p);
719 static void *invalid_while_stmt_rule(Parser *p);
720 static void *invalid_for_stmt_rule(Parser *p);
721 static void *invalid_def_raw_rule(Parser *p);
722 static void *invalid_class_def_raw_rule(Parser *p);
723 static void *invalid_double_starred_kvpairs_rule(Parser *p);
724 static void *invalid_kvpair_rule(Parser *p);
725 static asdl_seq *_loop0_1_rule(Parser *p);
726 static asdl_seq *_loop0_2_rule(Parser *p);
727 static asdl_seq *_loop0_4_rule(Parser *p);
728 static asdl_seq *_gather_3_rule(Parser *p);
729 static asdl_seq *_loop0_6_rule(Parser *p);
730 static asdl_seq *_gather_5_rule(Parser *p);
731 static asdl_seq *_loop0_8_rule(Parser *p);
732 static asdl_seq *_gather_7_rule(Parser *p);
733 static asdl_seq *_loop0_10_rule(Parser *p);
734 static asdl_seq *_gather_9_rule(Parser *p);
735 static asdl_seq *_loop1_11_rule(Parser *p);
736 static asdl_seq *_loop0_13_rule(Parser *p);
737 static asdl_seq *_gather_12_rule(Parser *p);
738 static void *_tmp_14_rule(Parser *p);
739 static void *_tmp_15_rule(Parser *p);
740 static void *_tmp_16_rule(Parser *p);
741 static void *_tmp_17_rule(Parser *p);
742 static void *_tmp_18_rule(Parser *p);
743 static void *_tmp_19_rule(Parser *p);
744 static void *_tmp_20_rule(Parser *p);
745 static void *_tmp_21_rule(Parser *p);
746 static asdl_seq *_loop1_22_rule(Parser *p);
747 static void *_tmp_23_rule(Parser *p);
748 static void *_tmp_24_rule(Parser *p);
749 static asdl_seq *_loop0_26_rule(Parser *p);
750 static asdl_seq *_gather_25_rule(Parser *p);
751 static asdl_seq *_loop0_28_rule(Parser *p);
752 static asdl_seq *_gather_27_rule(Parser *p);
753 static void *_tmp_29_rule(Parser *p);
754 static void *_tmp_30_rule(Parser *p);
755 static asdl_seq *_loop0_31_rule(Parser *p);
756 static asdl_seq *_loop1_32_rule(Parser *p);
757 static asdl_seq *_loop0_34_rule(Parser *p);
758 static asdl_seq *_gather_33_rule(Parser *p);
759 static void *_tmp_35_rule(Parser *p);
760 static asdl_seq *_loop0_37_rule(Parser *p);
761 static asdl_seq *_gather_36_rule(Parser *p);
762 static void *_tmp_38_rule(Parser *p);
763 static asdl_seq *_loop0_40_rule(Parser *p);
764 static asdl_seq *_gather_39_rule(Parser *p);
765 static asdl_seq *_loop0_42_rule(Parser *p);
766 static asdl_seq *_gather_41_rule(Parser *p);
767 static asdl_seq *_loop0_44_rule(Parser *p);
768 static asdl_seq *_gather_43_rule(Parser *p);
769 static asdl_seq *_loop0_46_rule(Parser *p);
770 static asdl_seq *_gather_45_rule(Parser *p);
771 static void *_tmp_47_rule(Parser *p);
772 static asdl_seq *_loop1_48_rule(Parser *p);
773 static void *_tmp_49_rule(Parser *p);
774 static asdl_seq *_loop1_50_rule(Parser *p);
775 static asdl_seq *_loop0_52_rule(Parser *p);
776 static asdl_seq *_gather_51_rule(Parser *p);
777 static void *_tmp_53_rule(Parser *p);
778 static void *_tmp_54_rule(Parser *p);
779 static void *_tmp_55_rule(Parser *p);
780 static void *_tmp_56_rule(Parser *p);
781 static asdl_seq *_loop0_58_rule(Parser *p);
782 static asdl_seq *_gather_57_rule(Parser *p);
783 static asdl_seq *_loop0_60_rule(Parser *p);
784 static asdl_seq *_gather_59_rule(Parser *p);
785 static void *_tmp_61_rule(Parser *p);
786 static asdl_seq *_loop0_63_rule(Parser *p);
787 static asdl_seq *_gather_62_rule(Parser *p);
788 static asdl_seq *_loop0_65_rule(Parser *p);
789 static asdl_seq *_gather_64_rule(Parser *p);
790 static void *_tmp_66_rule(Parser *p);
791 static void *_tmp_67_rule(Parser *p);
792 static void *_tmp_68_rule(Parser *p);
793 static void *_tmp_69_rule(Parser *p);
794 static asdl_seq *_loop0_70_rule(Parser *p);
795 static asdl_seq *_loop0_71_rule(Parser *p);
796 static asdl_seq *_loop0_72_rule(Parser *p);
797 static asdl_seq *_loop1_73_rule(Parser *p);
798 static asdl_seq *_loop0_74_rule(Parser *p);
799 static asdl_seq *_loop1_75_rule(Parser *p);
800 static asdl_seq *_loop1_76_rule(Parser *p);
801 static asdl_seq *_loop1_77_rule(Parser *p);
802 static asdl_seq *_loop0_78_rule(Parser *p);
803 static asdl_seq *_loop1_79_rule(Parser *p);
804 static asdl_seq *_loop0_80_rule(Parser *p);
805 static asdl_seq *_loop1_81_rule(Parser *p);
806 static asdl_seq *_loop0_82_rule(Parser *p);
807 static asdl_seq *_loop1_83_rule(Parser *p);
808 static asdl_seq *_loop1_84_rule(Parser *p);
809 static void *_tmp_85_rule(Parser *p);
810 static asdl_seq *_loop1_86_rule(Parser *p);
811 static asdl_seq *_loop0_88_rule(Parser *p);
812 static asdl_seq *_gather_87_rule(Parser *p);
813 static asdl_seq *_loop1_89_rule(Parser *p);
814 static asdl_seq *_loop0_90_rule(Parser *p);
815 static asdl_seq *_loop0_91_rule(Parser *p);
816 static asdl_seq *_loop0_92_rule(Parser *p);
817 static asdl_seq *_loop1_93_rule(Parser *p);
818 static asdl_seq *_loop0_94_rule(Parser *p);
819 static asdl_seq *_loop1_95_rule(Parser *p);
820 static asdl_seq *_loop1_96_rule(Parser *p);
821 static asdl_seq *_loop1_97_rule(Parser *p);
822 static asdl_seq *_loop0_98_rule(Parser *p);
823 static asdl_seq *_loop1_99_rule(Parser *p);
824 static asdl_seq *_loop0_100_rule(Parser *p);
825 static asdl_seq *_loop1_101_rule(Parser *p);
826 static asdl_seq *_loop0_102_rule(Parser *p);
827 static asdl_seq *_loop1_103_rule(Parser *p);
828 static asdl_seq *_loop1_104_rule(Parser *p);
829 static asdl_seq *_loop1_105_rule(Parser *p);
830 static asdl_seq *_loop1_106_rule(Parser *p);
831 static void *_tmp_107_rule(Parser *p);
832 static asdl_seq *_loop0_109_rule(Parser *p);
833 static asdl_seq *_gather_108_rule(Parser *p);
834 static void *_tmp_110_rule(Parser *p);
835 static void *_tmp_111_rule(Parser *p);
836 static void *_tmp_112_rule(Parser *p);
837 static void *_tmp_113_rule(Parser *p);
838 static asdl_seq *_loop1_114_rule(Parser *p);
839 static void *_tmp_115_rule(Parser *p);
840 static void *_tmp_116_rule(Parser *p);
841 static void *_tmp_117_rule(Parser *p);
842 static asdl_seq *_loop0_119_rule(Parser *p);
843 static asdl_seq *_gather_118_rule(Parser *p);
844 static asdl_seq *_loop1_120_rule(Parser *p);
845 static asdl_seq *_loop0_121_rule(Parser *p);
846 static asdl_seq *_loop0_122_rule(Parser *p);
847 static asdl_seq *_loop0_124_rule(Parser *p);
848 static asdl_seq *_gather_123_rule(Parser *p);
849 static void *_tmp_125_rule(Parser *p);
850 static asdl_seq *_loop0_127_rule(Parser *p);
851 static asdl_seq *_gather_126_rule(Parser *p);
852 static asdl_seq *_loop0_129_rule(Parser *p);
853 static asdl_seq *_gather_128_rule(Parser *p);
854 static asdl_seq *_loop0_131_rule(Parser *p);
855 static asdl_seq *_gather_130_rule(Parser *p);
856 static asdl_seq *_loop0_133_rule(Parser *p);
857 static asdl_seq *_gather_132_rule(Parser *p);
858 static asdl_seq *_loop0_134_rule(Parser *p);
859 static asdl_seq *_loop0_136_rule(Parser *p);
860 static asdl_seq *_gather_135_rule(Parser *p);
861 static asdl_seq *_loop1_137_rule(Parser *p);
862 static void *_tmp_138_rule(Parser *p);
863 static asdl_seq *_loop0_140_rule(Parser *p);
864 static asdl_seq *_gather_139_rule(Parser *p);
865 static void *_tmp_141_rule(Parser *p);
866 static void *_tmp_142_rule(Parser *p);
867 static void *_tmp_143_rule(Parser *p);
868 static void *_tmp_144_rule(Parser *p);
869 static void *_tmp_145_rule(Parser *p);
870 static void *_tmp_146_rule(Parser *p);
871 static void *_tmp_147_rule(Parser *p);
872 static void *_tmp_148_rule(Parser *p);
873 static asdl_seq *_loop0_149_rule(Parser *p);
874 static asdl_seq *_loop0_150_rule(Parser *p);
875 static asdl_seq *_loop0_151_rule(Parser *p);
876 static void *_tmp_152_rule(Parser *p);
877 static void *_tmp_153_rule(Parser *p);
878 static void *_tmp_154_rule(Parser *p);
879 static void *_tmp_155_rule(Parser *p);
880 static asdl_seq *_loop0_156_rule(Parser *p);
881 static asdl_seq *_loop1_157_rule(Parser *p);
882 static asdl_seq *_loop0_158_rule(Parser *p);
883 static asdl_seq *_loop1_159_rule(Parser *p);
884 static void *_tmp_160_rule(Parser *p);
885 static void *_tmp_161_rule(Parser *p);
886 static void *_tmp_162_rule(Parser *p);
887 static asdl_seq *_loop0_164_rule(Parser *p);
888 static asdl_seq *_gather_163_rule(Parser *p);
889 static asdl_seq *_loop0_166_rule(Parser *p);
890 static asdl_seq *_gather_165_rule(Parser *p);
891 static asdl_seq *_loop0_168_rule(Parser *p);
892 static asdl_seq *_gather_167_rule(Parser *p);
893 static asdl_seq *_loop0_170_rule(Parser *p);
894 static asdl_seq *_gather_169_rule(Parser *p);
895 static void *_tmp_171_rule(Parser *p);
896 static void *_tmp_172_rule(Parser *p);
897 static void *_tmp_173_rule(Parser *p);
898 static void *_tmp_174_rule(Parser *p);
899 static void *_tmp_175_rule(Parser *p);
900 static void *_tmp_176_rule(Parser *p);
901 static void *_tmp_177_rule(Parser *p);
902 static asdl_seq *_loop0_179_rule(Parser *p);
903 static asdl_seq *_gather_178_rule(Parser *p);
904 static void *_tmp_180_rule(Parser *p);
905 static void *_tmp_181_rule(Parser *p);
906 static void *_tmp_182_rule(Parser *p);
907 static void *_tmp_183_rule(Parser *p);
908 static void *_tmp_184_rule(Parser *p);
909 static void *_tmp_185_rule(Parser *p);
910 static void *_tmp_186_rule(Parser *p);
911 static void *_tmp_187_rule(Parser *p);
912 static void *_tmp_188_rule(Parser *p);
913 static void *_tmp_189_rule(Parser *p);
914 static void *_tmp_190_rule(Parser *p);
915 static void *_tmp_191_rule(Parser *p);
916 static void *_tmp_192_rule(Parser *p);
917 static void *_tmp_193_rule(Parser *p);
918 static void *_tmp_194_rule(Parser *p);
919 static void *_tmp_195_rule(Parser *p);
920 static void *_tmp_196_rule(Parser *p);
921 static void *_tmp_197_rule(Parser *p);
922 static void *_tmp_198_rule(Parser *p);
923 static void *_tmp_199_rule(Parser *p);
924 static void *_tmp_200_rule(Parser *p);
925 static void *_tmp_201_rule(Parser *p);
926 static void *_tmp_202_rule(Parser *p);
927 static void *_tmp_203_rule(Parser *p);
928 static void *_tmp_204_rule(Parser *p);
929 static void *_tmp_205_rule(Parser *p);
930 static void *_tmp_206_rule(Parser *p);
931 
932 
933 // file: statements? $
934 static mod_ty
file_rule(Parser * p)935 file_rule(Parser *p)
936 {
937     if (p->level++ == MAXSTACK) {
938         p->error_indicator = 1;
939         PyErr_NoMemory();
940     }
941     if (p->error_indicator) {
942         p->level--;
943         return NULL;
944     }
945     mod_ty _res = NULL;
946     int _mark = p->mark;
947     { // statements? $
948         if (p->error_indicator) {
949             p->level--;
950             return NULL;
951         }
952         D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
953         void *a;
954         Token * endmarker_var;
955         if (
956             (a = statements_rule(p), !p->error_indicator)  // statements?
957             &&
958             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
959         )
960         {
961             D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
962             _res = _PyPegen_make_module ( p , a );
963             if (_res == NULL && PyErr_Occurred()) {
964                 p->error_indicator = 1;
965                 p->level--;
966                 return NULL;
967             }
968             goto done;
969         }
970         p->mark = _mark;
971         D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
972                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
973     }
974     _res = NULL;
975   done:
976     p->level--;
977     return _res;
978 }
979 
980 // interactive: statement_newline
981 static mod_ty
interactive_rule(Parser * p)982 interactive_rule(Parser *p)
983 {
984     if (p->level++ == MAXSTACK) {
985         p->error_indicator = 1;
986         PyErr_NoMemory();
987     }
988     if (p->error_indicator) {
989         p->level--;
990         return NULL;
991     }
992     mod_ty _res = NULL;
993     int _mark = p->mark;
994     { // statement_newline
995         if (p->error_indicator) {
996             p->level--;
997             return NULL;
998         }
999         D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1000         asdl_stmt_seq* a;
1001         if (
1002             (a = statement_newline_rule(p))  // statement_newline
1003         )
1004         {
1005             D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1006             _res = _PyAST_Interactive ( a , p -> arena );
1007             if (_res == NULL && PyErr_Occurred()) {
1008                 p->error_indicator = 1;
1009                 p->level--;
1010                 return NULL;
1011             }
1012             goto done;
1013         }
1014         p->mark = _mark;
1015         D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
1016                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
1017     }
1018     _res = NULL;
1019   done:
1020     p->level--;
1021     return _res;
1022 }
1023 
1024 // eval: expressions NEWLINE* $
1025 static mod_ty
eval_rule(Parser * p)1026 eval_rule(Parser *p)
1027 {
1028     if (p->level++ == MAXSTACK) {
1029         p->error_indicator = 1;
1030         PyErr_NoMemory();
1031     }
1032     if (p->error_indicator) {
1033         p->level--;
1034         return NULL;
1035     }
1036     mod_ty _res = NULL;
1037     int _mark = p->mark;
1038     { // expressions NEWLINE* $
1039         if (p->error_indicator) {
1040             p->level--;
1041             return NULL;
1042         }
1043         D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1044         asdl_seq * _loop0_1_var;
1045         expr_ty a;
1046         Token * endmarker_var;
1047         if (
1048             (a = expressions_rule(p))  // expressions
1049             &&
1050             (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1051             &&
1052             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1053         )
1054         {
1055             D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1056             _res = _PyAST_Expression ( a , p -> arena );
1057             if (_res == NULL && PyErr_Occurred()) {
1058                 p->error_indicator = 1;
1059                 p->level--;
1060                 return NULL;
1061             }
1062             goto done;
1063         }
1064         p->mark = _mark;
1065         D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1066                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1067     }
1068     _res = NULL;
1069   done:
1070     p->level--;
1071     return _res;
1072 }
1073 
1074 // func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
1075 static mod_ty
func_type_rule(Parser * p)1076 func_type_rule(Parser *p)
1077 {
1078     if (p->level++ == MAXSTACK) {
1079         p->error_indicator = 1;
1080         PyErr_NoMemory();
1081     }
1082     if (p->error_indicator) {
1083         p->level--;
1084         return NULL;
1085     }
1086     mod_ty _res = NULL;
1087     int _mark = p->mark;
1088     { // '(' type_expressions? ')' '->' expression NEWLINE* $
1089         if (p->error_indicator) {
1090             p->level--;
1091             return NULL;
1092         }
1093         D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1094         Token * _literal;
1095         Token * _literal_1;
1096         Token * _literal_2;
1097         asdl_seq * _loop0_2_var;
1098         void *a;
1099         expr_ty b;
1100         Token * endmarker_var;
1101         if (
1102             (_literal = _PyPegen_expect_token(p, 7))  // token='('
1103             &&
1104             (a = type_expressions_rule(p), !p->error_indicator)  // type_expressions?
1105             &&
1106             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
1107             &&
1108             (_literal_2 = _PyPegen_expect_token(p, 51))  // token='->'
1109             &&
1110             (b = expression_rule(p))  // expression
1111             &&
1112             (_loop0_2_var = _loop0_2_rule(p))  // NEWLINE*
1113             &&
1114             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1115         )
1116         {
1117             D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1118             _res = _PyAST_FunctionType ( a , b , p -> arena );
1119             if (_res == NULL && PyErr_Occurred()) {
1120                 p->error_indicator = 1;
1121                 p->level--;
1122                 return NULL;
1123             }
1124             goto done;
1125         }
1126         p->mark = _mark;
1127         D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
1128                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1129     }
1130     _res = NULL;
1131   done:
1132     p->level--;
1133     return _res;
1134 }
1135 
1136 // fstring: star_expressions
1137 static expr_ty
fstring_rule(Parser * p)1138 fstring_rule(Parser *p)
1139 {
1140     if (p->level++ == MAXSTACK) {
1141         p->error_indicator = 1;
1142         PyErr_NoMemory();
1143     }
1144     if (p->error_indicator) {
1145         p->level--;
1146         return NULL;
1147     }
1148     expr_ty _res = NULL;
1149     int _mark = p->mark;
1150     { // star_expressions
1151         if (p->error_indicator) {
1152             p->level--;
1153             return NULL;
1154         }
1155         D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1156         expr_ty star_expressions_var;
1157         if (
1158             (star_expressions_var = star_expressions_rule(p))  // star_expressions
1159         )
1160         {
1161             D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1162             _res = star_expressions_var;
1163             goto done;
1164         }
1165         p->mark = _mark;
1166         D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
1167                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1168     }
1169     _res = NULL;
1170   done:
1171     p->level--;
1172     return _res;
1173 }
1174 
1175 // type_expressions:
1176 //     | ','.expression+ ',' '*' expression ',' '**' expression
1177 //     | ','.expression+ ',' '*' expression
1178 //     | ','.expression+ ',' '**' expression
1179 //     | '*' expression ',' '**' expression
1180 //     | '*' expression
1181 //     | '**' expression
1182 //     | ','.expression+
1183 static asdl_expr_seq*
type_expressions_rule(Parser * p)1184 type_expressions_rule(Parser *p)
1185 {
1186     if (p->level++ == MAXSTACK) {
1187         p->error_indicator = 1;
1188         PyErr_NoMemory();
1189     }
1190     if (p->error_indicator) {
1191         p->level--;
1192         return NULL;
1193     }
1194     asdl_expr_seq* _res = NULL;
1195     int _mark = p->mark;
1196     { // ','.expression+ ',' '*' expression ',' '**' expression
1197         if (p->error_indicator) {
1198             p->level--;
1199             return NULL;
1200         }
1201         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
1202         Token * _literal;
1203         Token * _literal_1;
1204         Token * _literal_2;
1205         Token * _literal_3;
1206         asdl_seq * a;
1207         expr_ty b;
1208         expr_ty c;
1209         if (
1210             (a = _gather_3_rule(p))  // ','.expression+
1211             &&
1212             (_literal = _PyPegen_expect_token(p, 12))  // token=','
1213             &&
1214             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
1215             &&
1216             (b = expression_rule(p))  // expression
1217             &&
1218             (_literal_2 = _PyPegen_expect_token(p, 12))  // token=','
1219             &&
1220             (_literal_3 = _PyPegen_expect_token(p, 35))  // token='**'
1221             &&
1222             (c = expression_rule(p))  // expression
1223         )
1224         {
1225             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
1226             _res = ( asdl_expr_seq * ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq * , _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
1227             if (_res == NULL && PyErr_Occurred()) {
1228                 p->error_indicator = 1;
1229                 p->level--;
1230                 return NULL;
1231             }
1232             goto done;
1233         }
1234         p->mark = _mark;
1235         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1236                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
1237     }
1238     { // ','.expression+ ',' '*' expression
1239         if (p->error_indicator) {
1240             p->level--;
1241             return NULL;
1242         }
1243         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
1244         Token * _literal;
1245         Token * _literal_1;
1246         asdl_seq * a;
1247         expr_ty b;
1248         if (
1249             (a = _gather_5_rule(p))  // ','.expression+
1250             &&
1251             (_literal = _PyPegen_expect_token(p, 12))  // token=','
1252             &&
1253             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
1254             &&
1255             (b = expression_rule(p))  // expression
1256         )
1257         {
1258             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
1259             _res = ( asdl_expr_seq * ) _PyPegen_seq_append_to_end ( p , a , b );
1260             if (_res == NULL && PyErr_Occurred()) {
1261                 p->error_indicator = 1;
1262                 p->level--;
1263                 return NULL;
1264             }
1265             goto done;
1266         }
1267         p->mark = _mark;
1268         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1269                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
1270     }
1271     { // ','.expression+ ',' '**' expression
1272         if (p->error_indicator) {
1273             p->level--;
1274             return NULL;
1275         }
1276         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
1277         Token * _literal;
1278         Token * _literal_1;
1279         asdl_seq * a;
1280         expr_ty b;
1281         if (
1282             (a = _gather_7_rule(p))  // ','.expression+
1283             &&
1284             (_literal = _PyPegen_expect_token(p, 12))  // token=','
1285             &&
1286             (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
1287             &&
1288             (b = expression_rule(p))  // expression
1289         )
1290         {
1291             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
1292             _res = ( asdl_expr_seq * ) _PyPegen_seq_append_to_end ( p , a , b );
1293             if (_res == NULL && PyErr_Occurred()) {
1294                 p->error_indicator = 1;
1295                 p->level--;
1296                 return NULL;
1297             }
1298             goto done;
1299         }
1300         p->mark = _mark;
1301         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1302                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
1303     }
1304     { // '*' expression ',' '**' expression
1305         if (p->error_indicator) {
1306             p->level--;
1307             return NULL;
1308         }
1309         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
1310         Token * _literal;
1311         Token * _literal_1;
1312         Token * _literal_2;
1313         expr_ty a;
1314         expr_ty b;
1315         if (
1316             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
1317             &&
1318             (a = expression_rule(p))  // expression
1319             &&
1320             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
1321             &&
1322             (_literal_2 = _PyPegen_expect_token(p, 35))  // token='**'
1323             &&
1324             (b = expression_rule(p))  // expression
1325         )
1326         {
1327             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
1328             _res = ( asdl_expr_seq * ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq * , _PyPegen_singleton_seq ( p , a ) ) , b );
1329             if (_res == NULL && PyErr_Occurred()) {
1330                 p->error_indicator = 1;
1331                 p->level--;
1332                 return NULL;
1333             }
1334             goto done;
1335         }
1336         p->mark = _mark;
1337         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1338                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
1339     }
1340     { // '*' expression
1341         if (p->error_indicator) {
1342             p->level--;
1343             return NULL;
1344         }
1345         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
1346         Token * _literal;
1347         expr_ty a;
1348         if (
1349             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
1350             &&
1351             (a = expression_rule(p))  // expression
1352         )
1353         {
1354             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
1355             _res = ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , a );
1356             if (_res == NULL && PyErr_Occurred()) {
1357                 p->error_indicator = 1;
1358                 p->level--;
1359                 return NULL;
1360             }
1361             goto done;
1362         }
1363         p->mark = _mark;
1364         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1365                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
1366     }
1367     { // '**' expression
1368         if (p->error_indicator) {
1369             p->level--;
1370             return NULL;
1371         }
1372         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
1373         Token * _literal;
1374         expr_ty a;
1375         if (
1376             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
1377             &&
1378             (a = expression_rule(p))  // expression
1379         )
1380         {
1381             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
1382             _res = ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , a );
1383             if (_res == NULL && PyErr_Occurred()) {
1384                 p->error_indicator = 1;
1385                 p->level--;
1386                 return NULL;
1387             }
1388             goto done;
1389         }
1390         p->mark = _mark;
1391         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1392                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
1393     }
1394     { // ','.expression+
1395         if (p->error_indicator) {
1396             p->level--;
1397             return NULL;
1398         }
1399         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
1400         asdl_expr_seq* a;
1401         if (
1402             (a = (asdl_expr_seq*)_gather_9_rule(p))  // ','.expression+
1403         )
1404         {
1405             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
1406             _res = a;
1407             if (_res == NULL && PyErr_Occurred()) {
1408                 p->error_indicator = 1;
1409                 p->level--;
1410                 return NULL;
1411             }
1412             goto done;
1413         }
1414         p->mark = _mark;
1415         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1416                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
1417     }
1418     _res = NULL;
1419   done:
1420     p->level--;
1421     return _res;
1422 }
1423 
1424 // statements: statement+
1425 static asdl_stmt_seq*
statements_rule(Parser * p)1426 statements_rule(Parser *p)
1427 {
1428     if (p->level++ == MAXSTACK) {
1429         p->error_indicator = 1;
1430         PyErr_NoMemory();
1431     }
1432     if (p->error_indicator) {
1433         p->level--;
1434         return NULL;
1435     }
1436     asdl_stmt_seq* _res = NULL;
1437     int _mark = p->mark;
1438     { // statement+
1439         if (p->error_indicator) {
1440             p->level--;
1441             return NULL;
1442         }
1443         D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1444         asdl_seq * a;
1445         if (
1446             (a = _loop1_11_rule(p))  // statement+
1447         )
1448         {
1449             D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1450             _res = ( asdl_stmt_seq * ) _PyPegen_seq_flatten ( p , a );
1451             if (_res == NULL && PyErr_Occurred()) {
1452                 p->error_indicator = 1;
1453                 p->level--;
1454                 return NULL;
1455             }
1456             goto done;
1457         }
1458         p->mark = _mark;
1459         D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1460                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1461     }
1462     _res = NULL;
1463   done:
1464     p->level--;
1465     return _res;
1466 }
1467 
1468 // statement: compound_stmt | simple_stmts
1469 static asdl_stmt_seq*
statement_rule(Parser * p)1470 statement_rule(Parser *p)
1471 {
1472     if (p->level++ == MAXSTACK) {
1473         p->error_indicator = 1;
1474         PyErr_NoMemory();
1475     }
1476     if (p->error_indicator) {
1477         p->level--;
1478         return NULL;
1479     }
1480     asdl_stmt_seq* _res = NULL;
1481     int _mark = p->mark;
1482     { // compound_stmt
1483         if (p->error_indicator) {
1484             p->level--;
1485             return NULL;
1486         }
1487         D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1488         stmt_ty a;
1489         if (
1490             (a = compound_stmt_rule(p))  // compound_stmt
1491         )
1492         {
1493             D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1494             _res = ( asdl_stmt_seq * ) _PyPegen_singleton_seq ( p , a );
1495             if (_res == NULL && PyErr_Occurred()) {
1496                 p->error_indicator = 1;
1497                 p->level--;
1498                 return NULL;
1499             }
1500             goto done;
1501         }
1502         p->mark = _mark;
1503         D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1504                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1505     }
1506     { // simple_stmts
1507         if (p->error_indicator) {
1508             p->level--;
1509             return NULL;
1510         }
1511         D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1512         asdl_stmt_seq* a;
1513         if (
1514             (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1515         )
1516         {
1517             D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1518             _res = a;
1519             if (_res == NULL && PyErr_Occurred()) {
1520                 p->error_indicator = 1;
1521                 p->level--;
1522                 return NULL;
1523             }
1524             goto done;
1525         }
1526         p->mark = _mark;
1527         D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1528                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1529     }
1530     _res = NULL;
1531   done:
1532     p->level--;
1533     return _res;
1534 }
1535 
1536 // statement_newline: compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1537 static asdl_stmt_seq*
statement_newline_rule(Parser * p)1538 statement_newline_rule(Parser *p)
1539 {
1540     if (p->level++ == MAXSTACK) {
1541         p->error_indicator = 1;
1542         PyErr_NoMemory();
1543     }
1544     if (p->error_indicator) {
1545         p->level--;
1546         return NULL;
1547     }
1548     asdl_stmt_seq* _res = NULL;
1549     int _mark = p->mark;
1550     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1551         p->error_indicator = 1;
1552         p->level--;
1553         return NULL;
1554     }
1555     int _start_lineno = p->tokens[_mark]->lineno;
1556     UNUSED(_start_lineno); // Only used by EXTRA macro
1557     int _start_col_offset = p->tokens[_mark]->col_offset;
1558     UNUSED(_start_col_offset); // Only used by EXTRA macro
1559     { // compound_stmt NEWLINE
1560         if (p->error_indicator) {
1561             p->level--;
1562             return NULL;
1563         }
1564         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
1565         stmt_ty a;
1566         Token * newline_var;
1567         if (
1568             (a = compound_stmt_rule(p))  // compound_stmt
1569             &&
1570             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1571         )
1572         {
1573             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
1574             _res = ( asdl_stmt_seq * ) _PyPegen_singleton_seq ( p , a );
1575             if (_res == NULL && PyErr_Occurred()) {
1576                 p->error_indicator = 1;
1577                 p->level--;
1578                 return NULL;
1579             }
1580             goto done;
1581         }
1582         p->mark = _mark;
1583         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1584                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt NEWLINE"));
1585     }
1586     { // simple_stmts
1587         if (p->error_indicator) {
1588             p->level--;
1589             return NULL;
1590         }
1591         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1592         asdl_stmt_seq* simple_stmts_var;
1593         if (
1594             (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1595         )
1596         {
1597             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1598             _res = simple_stmts_var;
1599             goto done;
1600         }
1601         p->mark = _mark;
1602         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1603                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1604     }
1605     { // NEWLINE
1606         if (p->error_indicator) {
1607             p->level--;
1608             return NULL;
1609         }
1610         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1611         Token * newline_var;
1612         if (
1613             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1614         )
1615         {
1616             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1617             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1618             if (_token == NULL) {
1619                 p->level--;
1620                 return NULL;
1621             }
1622             int _end_lineno = _token->end_lineno;
1623             UNUSED(_end_lineno); // Only used by EXTRA macro
1624             int _end_col_offset = _token->end_col_offset;
1625             UNUSED(_end_col_offset); // Only used by EXTRA macro
1626             _res = ( asdl_stmt_seq * ) _PyPegen_singleton_seq ( p , CHECK ( stmt_ty , _PyAST_Pass ( EXTRA ) ) );
1627             if (_res == NULL && PyErr_Occurred()) {
1628                 p->error_indicator = 1;
1629                 p->level--;
1630                 return NULL;
1631             }
1632             goto done;
1633         }
1634         p->mark = _mark;
1635         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1636                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1637     }
1638     { // $
1639         if (p->error_indicator) {
1640             p->level--;
1641             return NULL;
1642         }
1643         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1644         Token * endmarker_var;
1645         if (
1646             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1647         )
1648         {
1649             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1650             _res = _PyPegen_interactive_exit ( p );
1651             if (_res == NULL && PyErr_Occurred()) {
1652                 p->error_indicator = 1;
1653                 p->level--;
1654                 return NULL;
1655             }
1656             goto done;
1657         }
1658         p->mark = _mark;
1659         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1660                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1661     }
1662     _res = NULL;
1663   done:
1664     p->level--;
1665     return _res;
1666 }
1667 
1668 // simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1669 static asdl_stmt_seq*
simple_stmts_rule(Parser * p)1670 simple_stmts_rule(Parser *p)
1671 {
1672     if (p->level++ == MAXSTACK) {
1673         p->error_indicator = 1;
1674         PyErr_NoMemory();
1675     }
1676     if (p->error_indicator) {
1677         p->level--;
1678         return NULL;
1679     }
1680     asdl_stmt_seq* _res = NULL;
1681     int _mark = p->mark;
1682     { // simple_stmt !';' NEWLINE
1683         if (p->error_indicator) {
1684             p->level--;
1685             return NULL;
1686         }
1687         D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1688         stmt_ty a;
1689         Token * newline_var;
1690         if (
1691             (a = simple_stmt_rule(p))  // simple_stmt
1692             &&
1693             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1694             &&
1695             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1696         )
1697         {
1698             D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1699             _res = ( asdl_stmt_seq * ) _PyPegen_singleton_seq ( p , a );
1700             if (_res == NULL && PyErr_Occurred()) {
1701                 p->error_indicator = 1;
1702                 p->level--;
1703                 return NULL;
1704             }
1705             goto done;
1706         }
1707         p->mark = _mark;
1708         D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1709                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1710     }
1711     { // ';'.simple_stmt+ ';'? NEWLINE
1712         if (p->error_indicator) {
1713             p->level--;
1714             return NULL;
1715         }
1716         D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1717         void *_opt_var;
1718         UNUSED(_opt_var); // Silence compiler warnings
1719         asdl_stmt_seq* a;
1720         Token * newline_var;
1721         if (
1722             (a = (asdl_stmt_seq*)_gather_12_rule(p))  // ';'.simple_stmt+
1723             &&
1724             (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1725             &&
1726             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1727         )
1728         {
1729             D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1730             _res = a;
1731             if (_res == NULL && PyErr_Occurred()) {
1732                 p->error_indicator = 1;
1733                 p->level--;
1734                 return NULL;
1735             }
1736             goto done;
1737         }
1738         p->mark = _mark;
1739         D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1740                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1741     }
1742     _res = NULL;
1743   done:
1744     p->level--;
1745     return _res;
1746 }
1747 
1748 // simple_stmt:
1749 //     | assignment
1750 //     | star_expressions
1751 //     | &'return' return_stmt
1752 //     | &('import' | 'from') import_stmt
1753 //     | &'raise' raise_stmt
1754 //     | 'pass'
1755 //     | &'del' del_stmt
1756 //     | &'yield' yield_stmt
1757 //     | &'assert' assert_stmt
1758 //     | 'break'
1759 //     | 'continue'
1760 //     | &'global' global_stmt
1761 //     | &'nonlocal' nonlocal_stmt
1762 static stmt_ty
simple_stmt_rule(Parser * p)1763 simple_stmt_rule(Parser *p)
1764 {
1765     if (p->level++ == MAXSTACK) {
1766         p->error_indicator = 1;
1767         PyErr_NoMemory();
1768     }
1769     if (p->error_indicator) {
1770         p->level--;
1771         return NULL;
1772     }
1773     stmt_ty _res = NULL;
1774     if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1775         p->level--;
1776         return _res;
1777     }
1778     int _mark = p->mark;
1779     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1780         p->error_indicator = 1;
1781         p->level--;
1782         return NULL;
1783     }
1784     int _start_lineno = p->tokens[_mark]->lineno;
1785     UNUSED(_start_lineno); // Only used by EXTRA macro
1786     int _start_col_offset = p->tokens[_mark]->col_offset;
1787     UNUSED(_start_col_offset); // Only used by EXTRA macro
1788     { // assignment
1789         if (p->error_indicator) {
1790             p->level--;
1791             return NULL;
1792         }
1793         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1794         stmt_ty assignment_var;
1795         if (
1796             (assignment_var = assignment_rule(p))  // assignment
1797         )
1798         {
1799             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1800             _res = assignment_var;
1801             goto done;
1802         }
1803         p->mark = _mark;
1804         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1805                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1806     }
1807     { // star_expressions
1808         if (p->error_indicator) {
1809             p->level--;
1810             return NULL;
1811         }
1812         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1813         expr_ty e;
1814         if (
1815             (e = star_expressions_rule(p))  // star_expressions
1816         )
1817         {
1818             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1819             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1820             if (_token == NULL) {
1821                 p->level--;
1822                 return NULL;
1823             }
1824             int _end_lineno = _token->end_lineno;
1825             UNUSED(_end_lineno); // Only used by EXTRA macro
1826             int _end_col_offset = _token->end_col_offset;
1827             UNUSED(_end_col_offset); // Only used by EXTRA macro
1828             _res = _PyAST_Expr ( e , EXTRA );
1829             if (_res == NULL && PyErr_Occurred()) {
1830                 p->error_indicator = 1;
1831                 p->level--;
1832                 return NULL;
1833             }
1834             goto done;
1835         }
1836         p->mark = _mark;
1837         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1838                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1839     }
1840     { // &'return' return_stmt
1841         if (p->error_indicator) {
1842             p->level--;
1843             return NULL;
1844         }
1845         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1846         stmt_ty return_stmt_var;
1847         if (
1848             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500)  // token='return'
1849             &&
1850             (return_stmt_var = return_stmt_rule(p))  // return_stmt
1851         )
1852         {
1853             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1854             _res = return_stmt_var;
1855             goto done;
1856         }
1857         p->mark = _mark;
1858         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1859                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1860     }
1861     { // &('import' | 'from') import_stmt
1862         if (p->error_indicator) {
1863             p->level--;
1864             return NULL;
1865         }
1866         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1867         stmt_ty import_stmt_var;
1868         if (
1869             _PyPegen_lookahead(1, _tmp_14_rule, p)
1870             &&
1871             (import_stmt_var = import_stmt_rule(p))  // import_stmt
1872         )
1873         {
1874             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1875             _res = import_stmt_var;
1876             goto done;
1877         }
1878         p->mark = _mark;
1879         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1880                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1881     }
1882     { // &'raise' raise_stmt
1883         if (p->error_indicator) {
1884             p->level--;
1885             return NULL;
1886         }
1887         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1888         stmt_ty raise_stmt_var;
1889         if (
1890             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501)  // token='raise'
1891             &&
1892             (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1893         )
1894         {
1895             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1896             _res = raise_stmt_var;
1897             goto done;
1898         }
1899         p->mark = _mark;
1900         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1901                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1902     }
1903     { // 'pass'
1904         if (p->error_indicator) {
1905             p->level--;
1906             return NULL;
1907         }
1908         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
1909         Token * _keyword;
1910         if (
1911             (_keyword = _PyPegen_expect_token(p, 502))  // token='pass'
1912         )
1913         {
1914             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
1915             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1916             if (_token == NULL) {
1917                 p->level--;
1918                 return NULL;
1919             }
1920             int _end_lineno = _token->end_lineno;
1921             UNUSED(_end_lineno); // Only used by EXTRA macro
1922             int _end_col_offset = _token->end_col_offset;
1923             UNUSED(_end_col_offset); // Only used by EXTRA macro
1924             _res = _PyAST_Pass ( EXTRA );
1925             if (_res == NULL && PyErr_Occurred()) {
1926                 p->error_indicator = 1;
1927                 p->level--;
1928                 return NULL;
1929             }
1930             goto done;
1931         }
1932         p->mark = _mark;
1933         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1934                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
1935     }
1936     { // &'del' del_stmt
1937         if (p->error_indicator) {
1938             p->level--;
1939             return NULL;
1940         }
1941         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1942         stmt_ty del_stmt_var;
1943         if (
1944             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503)  // token='del'
1945             &&
1946             (del_stmt_var = del_stmt_rule(p))  // del_stmt
1947         )
1948         {
1949             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1950             _res = del_stmt_var;
1951             goto done;
1952         }
1953         p->mark = _mark;
1954         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1955                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1956     }
1957     { // &'yield' yield_stmt
1958         if (p->error_indicator) {
1959             p->level--;
1960             return NULL;
1961         }
1962         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1963         stmt_ty yield_stmt_var;
1964         if (
1965             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504)  // token='yield'
1966             &&
1967             (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1968         )
1969         {
1970             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1971             _res = yield_stmt_var;
1972             goto done;
1973         }
1974         p->mark = _mark;
1975         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1976                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1977     }
1978     { // &'assert' assert_stmt
1979         if (p->error_indicator) {
1980             p->level--;
1981             return NULL;
1982         }
1983         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1984         stmt_ty assert_stmt_var;
1985         if (
1986             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505)  // token='assert'
1987             &&
1988             (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1989         )
1990         {
1991             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1992             _res = assert_stmt_var;
1993             goto done;
1994         }
1995         p->mark = _mark;
1996         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1997                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1998     }
1999     { // 'break'
2000         if (p->error_indicator) {
2001             p->level--;
2002             return NULL;
2003         }
2004         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
2005         Token * _keyword;
2006         if (
2007             (_keyword = _PyPegen_expect_token(p, 506))  // token='break'
2008         )
2009         {
2010             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
2011             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2012             if (_token == NULL) {
2013                 p->level--;
2014                 return NULL;
2015             }
2016             int _end_lineno = _token->end_lineno;
2017             UNUSED(_end_lineno); // Only used by EXTRA macro
2018             int _end_col_offset = _token->end_col_offset;
2019             UNUSED(_end_col_offset); // Only used by EXTRA macro
2020             _res = _PyAST_Break ( EXTRA );
2021             if (_res == NULL && PyErr_Occurred()) {
2022                 p->error_indicator = 1;
2023                 p->level--;
2024                 return NULL;
2025             }
2026             goto done;
2027         }
2028         p->mark = _mark;
2029         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2030                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
2031     }
2032     { // 'continue'
2033         if (p->error_indicator) {
2034             p->level--;
2035             return NULL;
2036         }
2037         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
2038         Token * _keyword;
2039         if (
2040             (_keyword = _PyPegen_expect_token(p, 507))  // token='continue'
2041         )
2042         {
2043             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
2044             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2045             if (_token == NULL) {
2046                 p->level--;
2047                 return NULL;
2048             }
2049             int _end_lineno = _token->end_lineno;
2050             UNUSED(_end_lineno); // Only used by EXTRA macro
2051             int _end_col_offset = _token->end_col_offset;
2052             UNUSED(_end_col_offset); // Only used by EXTRA macro
2053             _res = _PyAST_Continue ( EXTRA );
2054             if (_res == NULL && PyErr_Occurred()) {
2055                 p->error_indicator = 1;
2056                 p->level--;
2057                 return NULL;
2058             }
2059             goto done;
2060         }
2061         p->mark = _mark;
2062         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2063                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
2064     }
2065     { // &'global' global_stmt
2066         if (p->error_indicator) {
2067             p->level--;
2068             return NULL;
2069         }
2070         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
2071         stmt_ty global_stmt_var;
2072         if (
2073             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508)  // token='global'
2074             &&
2075             (global_stmt_var = global_stmt_rule(p))  // global_stmt
2076         )
2077         {
2078             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
2079             _res = global_stmt_var;
2080             goto done;
2081         }
2082         p->mark = _mark;
2083         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2084                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
2085     }
2086     { // &'nonlocal' nonlocal_stmt
2087         if (p->error_indicator) {
2088             p->level--;
2089             return NULL;
2090         }
2091         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
2092         stmt_ty nonlocal_stmt_var;
2093         if (
2094             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509)  // token='nonlocal'
2095             &&
2096             (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
2097         )
2098         {
2099             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
2100             _res = nonlocal_stmt_var;
2101             goto done;
2102         }
2103         p->mark = _mark;
2104         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2105                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
2106     }
2107     _res = NULL;
2108   done:
2109     _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
2110     p->level--;
2111     return _res;
2112 }
2113 
2114 // compound_stmt:
2115 //     | &('def' | '@' | ASYNC) function_def
2116 //     | &'if' if_stmt
2117 //     | &('class' | '@') class_def
2118 //     | &('with' | ASYNC) with_stmt
2119 //     | &('for' | ASYNC) for_stmt
2120 //     | &'try' try_stmt
2121 //     | &'while' while_stmt
2122 //     | match_stmt
2123 static stmt_ty
compound_stmt_rule(Parser * p)2124 compound_stmt_rule(Parser *p)
2125 {
2126     if (p->level++ == MAXSTACK) {
2127         p->error_indicator = 1;
2128         PyErr_NoMemory();
2129     }
2130     if (p->error_indicator) {
2131         p->level--;
2132         return NULL;
2133     }
2134     stmt_ty _res = NULL;
2135     int _mark = p->mark;
2136     { // &('def' | '@' | ASYNC) function_def
2137         if (p->error_indicator) {
2138             p->level--;
2139             return NULL;
2140         }
2141         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
2142         stmt_ty function_def_var;
2143         if (
2144             _PyPegen_lookahead(1, _tmp_15_rule, p)
2145             &&
2146             (function_def_var = function_def_rule(p))  // function_def
2147         )
2148         {
2149             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
2150             _res = function_def_var;
2151             goto done;
2152         }
2153         p->mark = _mark;
2154         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2155                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
2156     }
2157     { // &'if' if_stmt
2158         if (p->error_indicator) {
2159             p->level--;
2160             return NULL;
2161         }
2162         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
2163         stmt_ty if_stmt_var;
2164         if (
2165             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510)  // token='if'
2166             &&
2167             (if_stmt_var = if_stmt_rule(p))  // if_stmt
2168         )
2169         {
2170             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
2171             _res = if_stmt_var;
2172             goto done;
2173         }
2174         p->mark = _mark;
2175         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2176                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
2177     }
2178     { // &('class' | '@') class_def
2179         if (p->error_indicator) {
2180             p->level--;
2181             return NULL;
2182         }
2183         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
2184         stmt_ty class_def_var;
2185         if (
2186             _PyPegen_lookahead(1, _tmp_16_rule, p)
2187             &&
2188             (class_def_var = class_def_rule(p))  // class_def
2189         )
2190         {
2191             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
2192             _res = class_def_var;
2193             goto done;
2194         }
2195         p->mark = _mark;
2196         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2197                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
2198     }
2199     { // &('with' | ASYNC) with_stmt
2200         if (p->error_indicator) {
2201             p->level--;
2202             return NULL;
2203         }
2204         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2205         stmt_ty with_stmt_var;
2206         if (
2207             _PyPegen_lookahead(1, _tmp_17_rule, p)
2208             &&
2209             (with_stmt_var = with_stmt_rule(p))  // with_stmt
2210         )
2211         {
2212             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2213             _res = with_stmt_var;
2214             goto done;
2215         }
2216         p->mark = _mark;
2217         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2218                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2219     }
2220     { // &('for' | ASYNC) for_stmt
2221         if (p->error_indicator) {
2222             p->level--;
2223             return NULL;
2224         }
2225         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2226         stmt_ty for_stmt_var;
2227         if (
2228             _PyPegen_lookahead(1, _tmp_18_rule, p)
2229             &&
2230             (for_stmt_var = for_stmt_rule(p))  // for_stmt
2231         )
2232         {
2233             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2234             _res = for_stmt_var;
2235             goto done;
2236         }
2237         p->mark = _mark;
2238         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2239                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2240     }
2241     { // &'try' try_stmt
2242         if (p->error_indicator) {
2243             p->level--;
2244             return NULL;
2245         }
2246         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2247         stmt_ty try_stmt_var;
2248         if (
2249             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511)  // token='try'
2250             &&
2251             (try_stmt_var = try_stmt_rule(p))  // try_stmt
2252         )
2253         {
2254             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2255             _res = try_stmt_var;
2256             goto done;
2257         }
2258         p->mark = _mark;
2259         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2260                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
2261     }
2262     { // &'while' while_stmt
2263         if (p->error_indicator) {
2264             p->level--;
2265             return NULL;
2266         }
2267         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2268         stmt_ty while_stmt_var;
2269         if (
2270             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512)  // token='while'
2271             &&
2272             (while_stmt_var = while_stmt_rule(p))  // while_stmt
2273         )
2274         {
2275             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2276             _res = while_stmt_var;
2277             goto done;
2278         }
2279         p->mark = _mark;
2280         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2281                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2282     }
2283     { // match_stmt
2284         if (p->error_indicator) {
2285             p->level--;
2286             return NULL;
2287         }
2288         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2289         stmt_ty match_stmt_var;
2290         if (
2291             (match_stmt_var = match_stmt_rule(p))  // match_stmt
2292         )
2293         {
2294             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2295             _res = match_stmt_var;
2296             goto done;
2297         }
2298         p->mark = _mark;
2299         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2300                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2301     }
2302     _res = NULL;
2303   done:
2304     p->level--;
2305     return _res;
2306 }
2307 
2308 // assignment:
2309 //     | NAME ':' expression ['=' annotated_rhs]
2310 //     | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2311 //     | ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
2312 //     | single_target augassign ~ (yield_expr | star_expressions)
2313 //     | invalid_assignment
2314 static stmt_ty
assignment_rule(Parser * p)2315 assignment_rule(Parser *p)
2316 {
2317     if (p->level++ == MAXSTACK) {
2318         p->error_indicator = 1;
2319         PyErr_NoMemory();
2320     }
2321     if (p->error_indicator) {
2322         p->level--;
2323         return NULL;
2324     }
2325     stmt_ty _res = NULL;
2326     int _mark = p->mark;
2327     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2328         p->error_indicator = 1;
2329         p->level--;
2330         return NULL;
2331     }
2332     int _start_lineno = p->tokens[_mark]->lineno;
2333     UNUSED(_start_lineno); // Only used by EXTRA macro
2334     int _start_col_offset = p->tokens[_mark]->col_offset;
2335     UNUSED(_start_col_offset); // Only used by EXTRA macro
2336     { // NAME ':' expression ['=' annotated_rhs]
2337         if (p->error_indicator) {
2338             p->level--;
2339             return NULL;
2340         }
2341         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2342         Token * _literal;
2343         expr_ty a;
2344         expr_ty b;
2345         void *c;
2346         if (
2347             (a = _PyPegen_name_token(p))  // NAME
2348             &&
2349             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2350             &&
2351             (b = expression_rule(p))  // expression
2352             &&
2353             (c = _tmp_19_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2354         )
2355         {
2356             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2357             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2358             if (_token == NULL) {
2359                 p->level--;
2360                 return NULL;
2361             }
2362             int _end_lineno = _token->end_lineno;
2363             UNUSED(_end_lineno); // Only used by EXTRA macro
2364             int _end_col_offset = _token->end_col_offset;
2365             UNUSED(_end_col_offset); // Only used by EXTRA macro
2366             _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 ) );
2367             if (_res == NULL && PyErr_Occurred()) {
2368                 p->error_indicator = 1;
2369                 p->level--;
2370                 return NULL;
2371             }
2372             goto done;
2373         }
2374         p->mark = _mark;
2375         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2376                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2377     }
2378     { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2379         if (p->error_indicator) {
2380             p->level--;
2381             return NULL;
2382         }
2383         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2384         Token * _literal;
2385         void *a;
2386         expr_ty b;
2387         void *c;
2388         if (
2389             (a = _tmp_20_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2390             &&
2391             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2392             &&
2393             (b = expression_rule(p))  // expression
2394             &&
2395             (c = _tmp_21_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2396         )
2397         {
2398             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2399             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2400             if (_token == NULL) {
2401                 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 = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2409             if (_res == NULL && PyErr_Occurred()) {
2410                 p->error_indicator = 1;
2411                 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, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2419     }
2420     { // ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
2421         if (p->error_indicator) {
2422             p->level--;
2423             return NULL;
2424         }
2425         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2426         asdl_expr_seq* a;
2427         void *b;
2428         void *tc;
2429         if (
2430             (a = (asdl_expr_seq*)_loop1_22_rule(p))  // ((star_targets '='))+
2431             &&
2432             (b = _tmp_23_rule(p))  // yield_expr | star_expressions
2433             &&
2434             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2435             &&
2436             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2437         )
2438         {
2439             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2440             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2441             if (_token == NULL) {
2442                 p->level--;
2443                 return NULL;
2444             }
2445             int _end_lineno = _token->end_lineno;
2446             UNUSED(_end_lineno); // Only used by EXTRA macro
2447             int _end_col_offset = _token->end_col_offset;
2448             UNUSED(_end_col_offset); // Only used by EXTRA macro
2449             _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2450             if (_res == NULL && PyErr_Occurred()) {
2451                 p->error_indicator = 1;
2452                 p->level--;
2453                 return NULL;
2454             }
2455             goto done;
2456         }
2457         p->mark = _mark;
2458         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2459                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2460     }
2461     { // single_target augassign ~ (yield_expr | star_expressions)
2462         if (p->error_indicator) {
2463             p->level--;
2464             return NULL;
2465         }
2466         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2467         int _cut_var = 0;
2468         expr_ty a;
2469         AugOperator* b;
2470         void *c;
2471         if (
2472             (a = single_target_rule(p))  // single_target
2473             &&
2474             (b = augassign_rule(p))  // augassign
2475             &&
2476             (_cut_var = 1)
2477             &&
2478             (c = _tmp_24_rule(p))  // yield_expr | star_expressions
2479         )
2480         {
2481             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2482             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2483             if (_token == NULL) {
2484                 p->level--;
2485                 return NULL;
2486             }
2487             int _end_lineno = _token->end_lineno;
2488             UNUSED(_end_lineno); // Only used by EXTRA macro
2489             int _end_col_offset = _token->end_col_offset;
2490             UNUSED(_end_col_offset); // Only used by EXTRA macro
2491             _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2492             if (_res == NULL && PyErr_Occurred()) {
2493                 p->error_indicator = 1;
2494                 p->level--;
2495                 return NULL;
2496             }
2497             goto done;
2498         }
2499         p->mark = _mark;
2500         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2501                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2502         if (_cut_var) {
2503             p->level--;
2504             return NULL;
2505         }
2506     }
2507     if (p->call_invalid_rules) { // invalid_assignment
2508         if (p->error_indicator) {
2509             p->level--;
2510             return NULL;
2511         }
2512         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2513         void *invalid_assignment_var;
2514         if (
2515             (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2516         )
2517         {
2518             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2519             _res = invalid_assignment_var;
2520             goto done;
2521         }
2522         p->mark = _mark;
2523         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2524                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2525     }
2526     _res = NULL;
2527   done:
2528     p->level--;
2529     return _res;
2530 }
2531 
2532 // augassign:
2533 //     | '+='
2534 //     | '-='
2535 //     | '*='
2536 //     | '@='
2537 //     | '/='
2538 //     | '%='
2539 //     | '&='
2540 //     | '|='
2541 //     | '^='
2542 //     | '<<='
2543 //     | '>>='
2544 //     | '**='
2545 //     | '//='
2546 static AugOperator*
augassign_rule(Parser * p)2547 augassign_rule(Parser *p)
2548 {
2549     if (p->level++ == MAXSTACK) {
2550         p->error_indicator = 1;
2551         PyErr_NoMemory();
2552     }
2553     if (p->error_indicator) {
2554         p->level--;
2555         return NULL;
2556     }
2557     AugOperator* _res = NULL;
2558     int _mark = p->mark;
2559     { // '+='
2560         if (p->error_indicator) {
2561             p->level--;
2562             return NULL;
2563         }
2564         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2565         Token * _literal;
2566         if (
2567             (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2568         )
2569         {
2570             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2571             _res = _PyPegen_augoperator ( p , Add );
2572             if (_res == NULL && PyErr_Occurred()) {
2573                 p->error_indicator = 1;
2574                 p->level--;
2575                 return NULL;
2576             }
2577             goto done;
2578         }
2579         p->mark = _mark;
2580         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2581                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2582     }
2583     { // '-='
2584         if (p->error_indicator) {
2585             p->level--;
2586             return NULL;
2587         }
2588         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2589         Token * _literal;
2590         if (
2591             (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2592         )
2593         {
2594             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2595             _res = _PyPegen_augoperator ( p , Sub );
2596             if (_res == NULL && PyErr_Occurred()) {
2597                 p->error_indicator = 1;
2598                 p->level--;
2599                 return NULL;
2600             }
2601             goto done;
2602         }
2603         p->mark = _mark;
2604         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2605                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2606     }
2607     { // '*='
2608         if (p->error_indicator) {
2609             p->level--;
2610             return NULL;
2611         }
2612         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2613         Token * _literal;
2614         if (
2615             (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2616         )
2617         {
2618             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2619             _res = _PyPegen_augoperator ( p , Mult );
2620             if (_res == NULL && PyErr_Occurred()) {
2621                 p->error_indicator = 1;
2622                 p->level--;
2623                 return NULL;
2624             }
2625             goto done;
2626         }
2627         p->mark = _mark;
2628         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2629                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2630     }
2631     { // '@='
2632         if (p->error_indicator) {
2633             p->level--;
2634             return NULL;
2635         }
2636         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2637         Token * _literal;
2638         if (
2639             (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2640         )
2641         {
2642             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2643             _res = CHECK_VERSION ( AugOperator * , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2644             if (_res == NULL && PyErr_Occurred()) {
2645                 p->error_indicator = 1;
2646                 p->level--;
2647                 return NULL;
2648             }
2649             goto done;
2650         }
2651         p->mark = _mark;
2652         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2653                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2654     }
2655     { // '/='
2656         if (p->error_indicator) {
2657             p->level--;
2658             return NULL;
2659         }
2660         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2661         Token * _literal;
2662         if (
2663             (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2664         )
2665         {
2666             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2667             _res = _PyPegen_augoperator ( p , Div );
2668             if (_res == NULL && PyErr_Occurred()) {
2669                 p->error_indicator = 1;
2670                 p->level--;
2671                 return NULL;
2672             }
2673             goto done;
2674         }
2675         p->mark = _mark;
2676         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2678     }
2679     { // '%='
2680         if (p->error_indicator) {
2681             p->level--;
2682             return NULL;
2683         }
2684         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2685         Token * _literal;
2686         if (
2687             (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2688         )
2689         {
2690             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2691             _res = _PyPegen_augoperator ( p , Mod );
2692             if (_res == NULL && PyErr_Occurred()) {
2693                 p->error_indicator = 1;
2694                 p->level--;
2695                 return NULL;
2696             }
2697             goto done;
2698         }
2699         p->mark = _mark;
2700         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2701                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2702     }
2703     { // '&='
2704         if (p->error_indicator) {
2705             p->level--;
2706             return NULL;
2707         }
2708         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2709         Token * _literal;
2710         if (
2711             (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2712         )
2713         {
2714             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2715             _res = _PyPegen_augoperator ( p , BitAnd );
2716             if (_res == NULL && PyErr_Occurred()) {
2717                 p->error_indicator = 1;
2718                 p->level--;
2719                 return NULL;
2720             }
2721             goto done;
2722         }
2723         p->mark = _mark;
2724         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2725                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2726     }
2727     { // '|='
2728         if (p->error_indicator) {
2729             p->level--;
2730             return NULL;
2731         }
2732         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2733         Token * _literal;
2734         if (
2735             (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2736         )
2737         {
2738             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2739             _res = _PyPegen_augoperator ( p , BitOr );
2740             if (_res == NULL && PyErr_Occurred()) {
2741                 p->error_indicator = 1;
2742                 p->level--;
2743                 return NULL;
2744             }
2745             goto done;
2746         }
2747         p->mark = _mark;
2748         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2749                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2750     }
2751     { // '^='
2752         if (p->error_indicator) {
2753             p->level--;
2754             return NULL;
2755         }
2756         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2757         Token * _literal;
2758         if (
2759             (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2760         )
2761         {
2762             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2763             _res = _PyPegen_augoperator ( p , BitXor );
2764             if (_res == NULL && PyErr_Occurred()) {
2765                 p->error_indicator = 1;
2766                 p->level--;
2767                 return NULL;
2768             }
2769             goto done;
2770         }
2771         p->mark = _mark;
2772         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2773                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2774     }
2775     { // '<<='
2776         if (p->error_indicator) {
2777             p->level--;
2778             return NULL;
2779         }
2780         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2781         Token * _literal;
2782         if (
2783             (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2784         )
2785         {
2786             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2787             _res = _PyPegen_augoperator ( p , LShift );
2788             if (_res == NULL && PyErr_Occurred()) {
2789                 p->error_indicator = 1;
2790                 p->level--;
2791                 return NULL;
2792             }
2793             goto done;
2794         }
2795         p->mark = _mark;
2796         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2797                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2798     }
2799     { // '>>='
2800         if (p->error_indicator) {
2801             p->level--;
2802             return NULL;
2803         }
2804         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2805         Token * _literal;
2806         if (
2807             (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2808         )
2809         {
2810             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2811             _res = _PyPegen_augoperator ( p , RShift );
2812             if (_res == NULL && PyErr_Occurred()) {
2813                 p->error_indicator = 1;
2814                 p->level--;
2815                 return NULL;
2816             }
2817             goto done;
2818         }
2819         p->mark = _mark;
2820         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2821                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2822     }
2823     { // '**='
2824         if (p->error_indicator) {
2825             p->level--;
2826             return NULL;
2827         }
2828         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2829         Token * _literal;
2830         if (
2831             (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2832         )
2833         {
2834             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2835             _res = _PyPegen_augoperator ( p , Pow );
2836             if (_res == NULL && PyErr_Occurred()) {
2837                 p->error_indicator = 1;
2838                 p->level--;
2839                 return NULL;
2840             }
2841             goto done;
2842         }
2843         p->mark = _mark;
2844         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2845                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2846     }
2847     { // '//='
2848         if (p->error_indicator) {
2849             p->level--;
2850             return NULL;
2851         }
2852         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2853         Token * _literal;
2854         if (
2855             (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2856         )
2857         {
2858             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2859             _res = _PyPegen_augoperator ( p , FloorDiv );
2860             if (_res == NULL && PyErr_Occurred()) {
2861                 p->error_indicator = 1;
2862                 p->level--;
2863                 return NULL;
2864             }
2865             goto done;
2866         }
2867         p->mark = _mark;
2868         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2869                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2870     }
2871     _res = NULL;
2872   done:
2873     p->level--;
2874     return _res;
2875 }
2876 
2877 // global_stmt: 'global' ','.NAME+
2878 static stmt_ty
global_stmt_rule(Parser * p)2879 global_stmt_rule(Parser *p)
2880 {
2881     if (p->level++ == MAXSTACK) {
2882         p->error_indicator = 1;
2883         PyErr_NoMemory();
2884     }
2885     if (p->error_indicator) {
2886         p->level--;
2887         return NULL;
2888     }
2889     stmt_ty _res = NULL;
2890     int _mark = p->mark;
2891     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2892         p->error_indicator = 1;
2893         p->level--;
2894         return NULL;
2895     }
2896     int _start_lineno = p->tokens[_mark]->lineno;
2897     UNUSED(_start_lineno); // Only used by EXTRA macro
2898     int _start_col_offset = p->tokens[_mark]->col_offset;
2899     UNUSED(_start_col_offset); // Only used by EXTRA macro
2900     { // 'global' ','.NAME+
2901         if (p->error_indicator) {
2902             p->level--;
2903             return NULL;
2904         }
2905         D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
2906         Token * _keyword;
2907         asdl_expr_seq* a;
2908         if (
2909             (_keyword = _PyPegen_expect_token(p, 508))  // token='global'
2910             &&
2911             (a = (asdl_expr_seq*)_gather_25_rule(p))  // ','.NAME+
2912         )
2913         {
2914             D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
2915             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2916             if (_token == NULL) {
2917                 p->level--;
2918                 return NULL;
2919             }
2920             int _end_lineno = _token->end_lineno;
2921             UNUSED(_end_lineno); // Only used by EXTRA macro
2922             int _end_col_offset = _token->end_col_offset;
2923             UNUSED(_end_col_offset); // Only used by EXTRA macro
2924             _res = _PyAST_Global ( CHECK ( asdl_identifier_seq * , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2925             if (_res == NULL && PyErr_Occurred()) {
2926                 p->error_indicator = 1;
2927                 p->level--;
2928                 return NULL;
2929             }
2930             goto done;
2931         }
2932         p->mark = _mark;
2933         D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2934                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
2935     }
2936     _res = NULL;
2937   done:
2938     p->level--;
2939     return _res;
2940 }
2941 
2942 // nonlocal_stmt: 'nonlocal' ','.NAME+
2943 static stmt_ty
nonlocal_stmt_rule(Parser * p)2944 nonlocal_stmt_rule(Parser *p)
2945 {
2946     if (p->level++ == MAXSTACK) {
2947         p->error_indicator = 1;
2948         PyErr_NoMemory();
2949     }
2950     if (p->error_indicator) {
2951         p->level--;
2952         return NULL;
2953     }
2954     stmt_ty _res = NULL;
2955     int _mark = p->mark;
2956     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2957         p->error_indicator = 1;
2958         p->level--;
2959         return NULL;
2960     }
2961     int _start_lineno = p->tokens[_mark]->lineno;
2962     UNUSED(_start_lineno); // Only used by EXTRA macro
2963     int _start_col_offset = p->tokens[_mark]->col_offset;
2964     UNUSED(_start_col_offset); // Only used by EXTRA macro
2965     { // 'nonlocal' ','.NAME+
2966         if (p->error_indicator) {
2967             p->level--;
2968             return NULL;
2969         }
2970         D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
2971         Token * _keyword;
2972         asdl_expr_seq* a;
2973         if (
2974             (_keyword = _PyPegen_expect_token(p, 509))  // token='nonlocal'
2975             &&
2976             (a = (asdl_expr_seq*)_gather_27_rule(p))  // ','.NAME+
2977         )
2978         {
2979             D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
2980             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2981             if (_token == NULL) {
2982                 p->level--;
2983                 return NULL;
2984             }
2985             int _end_lineno = _token->end_lineno;
2986             UNUSED(_end_lineno); // Only used by EXTRA macro
2987             int _end_col_offset = _token->end_col_offset;
2988             UNUSED(_end_col_offset); // Only used by EXTRA macro
2989             _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq * , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2990             if (_res == NULL && PyErr_Occurred()) {
2991                 p->error_indicator = 1;
2992                 p->level--;
2993                 return NULL;
2994             }
2995             goto done;
2996         }
2997         p->mark = _mark;
2998         D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2999                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
3000     }
3001     _res = NULL;
3002   done:
3003     p->level--;
3004     return _res;
3005 }
3006 
3007 // yield_stmt: yield_expr
3008 static stmt_ty
yield_stmt_rule(Parser * p)3009 yield_stmt_rule(Parser *p)
3010 {
3011     if (p->level++ == MAXSTACK) {
3012         p->error_indicator = 1;
3013         PyErr_NoMemory();
3014     }
3015     if (p->error_indicator) {
3016         p->level--;
3017         return NULL;
3018     }
3019     stmt_ty _res = NULL;
3020     int _mark = p->mark;
3021     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3022         p->error_indicator = 1;
3023         p->level--;
3024         return NULL;
3025     }
3026     int _start_lineno = p->tokens[_mark]->lineno;
3027     UNUSED(_start_lineno); // Only used by EXTRA macro
3028     int _start_col_offset = p->tokens[_mark]->col_offset;
3029     UNUSED(_start_col_offset); // Only used by EXTRA macro
3030     { // yield_expr
3031         if (p->error_indicator) {
3032             p->level--;
3033             return NULL;
3034         }
3035         D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3036         expr_ty y;
3037         if (
3038             (y = yield_expr_rule(p))  // yield_expr
3039         )
3040         {
3041             D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3042             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3043             if (_token == NULL) {
3044                 p->level--;
3045                 return NULL;
3046             }
3047             int _end_lineno = _token->end_lineno;
3048             UNUSED(_end_lineno); // Only used by EXTRA macro
3049             int _end_col_offset = _token->end_col_offset;
3050             UNUSED(_end_col_offset); // Only used by EXTRA macro
3051             _res = _PyAST_Expr ( y , EXTRA );
3052             if (_res == NULL && PyErr_Occurred()) {
3053                 p->error_indicator = 1;
3054                 p->level--;
3055                 return NULL;
3056             }
3057             goto done;
3058         }
3059         p->mark = _mark;
3060         D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3061                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3062     }
3063     _res = NULL;
3064   done:
3065     p->level--;
3066     return _res;
3067 }
3068 
3069 // assert_stmt: 'assert' expression [',' expression]
3070 static stmt_ty
assert_stmt_rule(Parser * p)3071 assert_stmt_rule(Parser *p)
3072 {
3073     if (p->level++ == MAXSTACK) {
3074         p->error_indicator = 1;
3075         PyErr_NoMemory();
3076     }
3077     if (p->error_indicator) {
3078         p->level--;
3079         return NULL;
3080     }
3081     stmt_ty _res = NULL;
3082     int _mark = p->mark;
3083     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3084         p->error_indicator = 1;
3085         p->level--;
3086         return NULL;
3087     }
3088     int _start_lineno = p->tokens[_mark]->lineno;
3089     UNUSED(_start_lineno); // Only used by EXTRA macro
3090     int _start_col_offset = p->tokens[_mark]->col_offset;
3091     UNUSED(_start_col_offset); // Only used by EXTRA macro
3092     { // 'assert' expression [',' expression]
3093         if (p->error_indicator) {
3094             p->level--;
3095             return NULL;
3096         }
3097         D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3098         Token * _keyword;
3099         expr_ty a;
3100         void *b;
3101         if (
3102             (_keyword = _PyPegen_expect_token(p, 505))  // token='assert'
3103             &&
3104             (a = expression_rule(p))  // expression
3105             &&
3106             (b = _tmp_29_rule(p), !p->error_indicator)  // [',' expression]
3107         )
3108         {
3109             D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3110             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3111             if (_token == NULL) {
3112                 p->level--;
3113                 return NULL;
3114             }
3115             int _end_lineno = _token->end_lineno;
3116             UNUSED(_end_lineno); // Only used by EXTRA macro
3117             int _end_col_offset = _token->end_col_offset;
3118             UNUSED(_end_col_offset); // Only used by EXTRA macro
3119             _res = _PyAST_Assert ( a , b , EXTRA );
3120             if (_res == NULL && PyErr_Occurred()) {
3121                 p->error_indicator = 1;
3122                 p->level--;
3123                 return NULL;
3124             }
3125             goto done;
3126         }
3127         p->mark = _mark;
3128         D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3129                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3130     }
3131     _res = NULL;
3132   done:
3133     p->level--;
3134     return _res;
3135 }
3136 
3137 // del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
3138 static stmt_ty
del_stmt_rule(Parser * p)3139 del_stmt_rule(Parser *p)
3140 {
3141     if (p->level++ == MAXSTACK) {
3142         p->error_indicator = 1;
3143         PyErr_NoMemory();
3144     }
3145     if (p->error_indicator) {
3146         p->level--;
3147         return NULL;
3148     }
3149     stmt_ty _res = NULL;
3150     int _mark = p->mark;
3151     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3152         p->error_indicator = 1;
3153         p->level--;
3154         return NULL;
3155     }
3156     int _start_lineno = p->tokens[_mark]->lineno;
3157     UNUSED(_start_lineno); // Only used by EXTRA macro
3158     int _start_col_offset = p->tokens[_mark]->col_offset;
3159     UNUSED(_start_col_offset); // Only used by EXTRA macro
3160     { // 'del' del_targets &(';' | NEWLINE)
3161         if (p->error_indicator) {
3162             p->level--;
3163             return NULL;
3164         }
3165         D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3166         Token * _keyword;
3167         asdl_expr_seq* a;
3168         if (
3169             (_keyword = _PyPegen_expect_token(p, 503))  // token='del'
3170             &&
3171             (a = del_targets_rule(p))  // del_targets
3172             &&
3173             _PyPegen_lookahead(1, _tmp_30_rule, p)
3174         )
3175         {
3176             D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3177             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3178             if (_token == NULL) {
3179                 p->level--;
3180                 return NULL;
3181             }
3182             int _end_lineno = _token->end_lineno;
3183             UNUSED(_end_lineno); // Only used by EXTRA macro
3184             int _end_col_offset = _token->end_col_offset;
3185             UNUSED(_end_col_offset); // Only used by EXTRA macro
3186             _res = _PyAST_Delete ( a , EXTRA );
3187             if (_res == NULL && PyErr_Occurred()) {
3188                 p->error_indicator = 1;
3189                 p->level--;
3190                 return NULL;
3191             }
3192             goto done;
3193         }
3194         p->mark = _mark;
3195         D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3196                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3197     }
3198     if (p->call_invalid_rules) { // invalid_del_stmt
3199         if (p->error_indicator) {
3200             p->level--;
3201             return NULL;
3202         }
3203         D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3204         void *invalid_del_stmt_var;
3205         if (
3206             (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3207         )
3208         {
3209             D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3210             _res = invalid_del_stmt_var;
3211             goto done;
3212         }
3213         p->mark = _mark;
3214         D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3215                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3216     }
3217     _res = NULL;
3218   done:
3219     p->level--;
3220     return _res;
3221 }
3222 
3223 // import_stmt: import_name | import_from
3224 static stmt_ty
import_stmt_rule(Parser * p)3225 import_stmt_rule(Parser *p)
3226 {
3227     if (p->level++ == MAXSTACK) {
3228         p->error_indicator = 1;
3229         PyErr_NoMemory();
3230     }
3231     if (p->error_indicator) {
3232         p->level--;
3233         return NULL;
3234     }
3235     stmt_ty _res = NULL;
3236     int _mark = p->mark;
3237     { // import_name
3238         if (p->error_indicator) {
3239             p->level--;
3240             return NULL;
3241         }
3242         D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3243         stmt_ty import_name_var;
3244         if (
3245             (import_name_var = import_name_rule(p))  // import_name
3246         )
3247         {
3248             D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3249             _res = import_name_var;
3250             goto done;
3251         }
3252         p->mark = _mark;
3253         D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3254                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3255     }
3256     { // import_from
3257         if (p->error_indicator) {
3258             p->level--;
3259             return NULL;
3260         }
3261         D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3262         stmt_ty import_from_var;
3263         if (
3264             (import_from_var = import_from_rule(p))  // import_from
3265         )
3266         {
3267             D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3268             _res = import_from_var;
3269             goto done;
3270         }
3271         p->mark = _mark;
3272         D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3273                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3274     }
3275     _res = NULL;
3276   done:
3277     p->level--;
3278     return _res;
3279 }
3280 
3281 // import_name: 'import' dotted_as_names
3282 static stmt_ty
import_name_rule(Parser * p)3283 import_name_rule(Parser *p)
3284 {
3285     if (p->level++ == MAXSTACK) {
3286         p->error_indicator = 1;
3287         PyErr_NoMemory();
3288     }
3289     if (p->error_indicator) {
3290         p->level--;
3291         return NULL;
3292     }
3293     stmt_ty _res = NULL;
3294     int _mark = p->mark;
3295     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3296         p->error_indicator = 1;
3297         p->level--;
3298         return NULL;
3299     }
3300     int _start_lineno = p->tokens[_mark]->lineno;
3301     UNUSED(_start_lineno); // Only used by EXTRA macro
3302     int _start_col_offset = p->tokens[_mark]->col_offset;
3303     UNUSED(_start_col_offset); // Only used by EXTRA macro
3304     { // 'import' dotted_as_names
3305         if (p->error_indicator) {
3306             p->level--;
3307             return NULL;
3308         }
3309         D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3310         Token * _keyword;
3311         asdl_alias_seq* a;
3312         if (
3313             (_keyword = _PyPegen_expect_token(p, 513))  // token='import'
3314             &&
3315             (a = dotted_as_names_rule(p))  // dotted_as_names
3316         )
3317         {
3318             D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3319             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3320             if (_token == NULL) {
3321                 p->level--;
3322                 return NULL;
3323             }
3324             int _end_lineno = _token->end_lineno;
3325             UNUSED(_end_lineno); // Only used by EXTRA macro
3326             int _end_col_offset = _token->end_col_offset;
3327             UNUSED(_end_col_offset); // Only used by EXTRA macro
3328             _res = _PyAST_Import ( a , EXTRA );
3329             if (_res == NULL && PyErr_Occurred()) {
3330                 p->error_indicator = 1;
3331                 p->level--;
3332                 return NULL;
3333             }
3334             goto done;
3335         }
3336         p->mark = _mark;
3337         D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3338                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3339     }
3340     _res = NULL;
3341   done:
3342     p->level--;
3343     return _res;
3344 }
3345 
3346 // import_from:
3347 //     | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3348 //     | 'from' (('.' | '...'))+ 'import' import_from_targets
3349 static stmt_ty
import_from_rule(Parser * p)3350 import_from_rule(Parser *p)
3351 {
3352     if (p->level++ == MAXSTACK) {
3353         p->error_indicator = 1;
3354         PyErr_NoMemory();
3355     }
3356     if (p->error_indicator) {
3357         p->level--;
3358         return NULL;
3359     }
3360     stmt_ty _res = NULL;
3361     int _mark = p->mark;
3362     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3363         p->error_indicator = 1;
3364         p->level--;
3365         return NULL;
3366     }
3367     int _start_lineno = p->tokens[_mark]->lineno;
3368     UNUSED(_start_lineno); // Only used by EXTRA macro
3369     int _start_col_offset = p->tokens[_mark]->col_offset;
3370     UNUSED(_start_col_offset); // Only used by EXTRA macro
3371     { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3372         if (p->error_indicator) {
3373             p->level--;
3374             return NULL;
3375         }
3376         D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3377         Token * _keyword;
3378         Token * _keyword_1;
3379         asdl_seq * a;
3380         expr_ty b;
3381         asdl_alias_seq* c;
3382         if (
3383             (_keyword = _PyPegen_expect_token(p, 514))  // token='from'
3384             &&
3385             (a = _loop0_31_rule(p))  // (('.' | '...'))*
3386             &&
3387             (b = dotted_name_rule(p))  // dotted_name
3388             &&
3389             (_keyword_1 = _PyPegen_expect_token(p, 513))  // token='import'
3390             &&
3391             (c = import_from_targets_rule(p))  // import_from_targets
3392         )
3393         {
3394             D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3395             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3396             if (_token == NULL) {
3397                 p->level--;
3398                 return NULL;
3399             }
3400             int _end_lineno = _token->end_lineno;
3401             UNUSED(_end_lineno); // Only used by EXTRA macro
3402             int _end_col_offset = _token->end_col_offset;
3403             UNUSED(_end_col_offset); // Only used by EXTRA macro
3404             _res = _PyAST_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3405             if (_res == NULL && PyErr_Occurred()) {
3406                 p->error_indicator = 1;
3407                 p->level--;
3408                 return NULL;
3409             }
3410             goto done;
3411         }
3412         p->mark = _mark;
3413         D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3414                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3415     }
3416     { // 'from' (('.' | '...'))+ 'import' import_from_targets
3417         if (p->error_indicator) {
3418             p->level--;
3419             return NULL;
3420         }
3421         D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3422         Token * _keyword;
3423         Token * _keyword_1;
3424         asdl_seq * a;
3425         asdl_alias_seq* b;
3426         if (
3427             (_keyword = _PyPegen_expect_token(p, 514))  // token='from'
3428             &&
3429             (a = _loop1_32_rule(p))  // (('.' | '...'))+
3430             &&
3431             (_keyword_1 = _PyPegen_expect_token(p, 513))  // token='import'
3432             &&
3433             (b = import_from_targets_rule(p))  // import_from_targets
3434         )
3435         {
3436             D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3437             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3438             if (_token == NULL) {
3439                 p->level--;
3440                 return NULL;
3441             }
3442             int _end_lineno = _token->end_lineno;
3443             UNUSED(_end_lineno); // Only used by EXTRA macro
3444             int _end_col_offset = _token->end_col_offset;
3445             UNUSED(_end_col_offset); // Only used by EXTRA macro
3446             _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3447             if (_res == NULL && PyErr_Occurred()) {
3448                 p->error_indicator = 1;
3449                 p->level--;
3450                 return NULL;
3451             }
3452             goto done;
3453         }
3454         p->mark = _mark;
3455         D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3456                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3457     }
3458     _res = NULL;
3459   done:
3460     p->level--;
3461     return _res;
3462 }
3463 
3464 // import_from_targets:
3465 //     | '(' import_from_as_names ','? ')'
3466 //     | import_from_as_names !','
3467 //     | '*'
3468 //     | invalid_import_from_targets
3469 static asdl_alias_seq*
import_from_targets_rule(Parser * p)3470 import_from_targets_rule(Parser *p)
3471 {
3472     if (p->level++ == MAXSTACK) {
3473         p->error_indicator = 1;
3474         PyErr_NoMemory();
3475     }
3476     if (p->error_indicator) {
3477         p->level--;
3478         return NULL;
3479     }
3480     asdl_alias_seq* _res = NULL;
3481     int _mark = p->mark;
3482     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3483         p->error_indicator = 1;
3484         p->level--;
3485         return NULL;
3486     }
3487     int _start_lineno = p->tokens[_mark]->lineno;
3488     UNUSED(_start_lineno); // Only used by EXTRA macro
3489     int _start_col_offset = p->tokens[_mark]->col_offset;
3490     UNUSED(_start_col_offset); // Only used by EXTRA macro
3491     { // '(' import_from_as_names ','? ')'
3492         if (p->error_indicator) {
3493             p->level--;
3494             return NULL;
3495         }
3496         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3497         Token * _literal;
3498         Token * _literal_1;
3499         void *_opt_var;
3500         UNUSED(_opt_var); // Silence compiler warnings
3501         asdl_alias_seq* a;
3502         if (
3503             (_literal = _PyPegen_expect_token(p, 7))  // token='('
3504             &&
3505             (a = import_from_as_names_rule(p))  // import_from_as_names
3506             &&
3507             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3508             &&
3509             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3510         )
3511         {
3512             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3513             _res = a;
3514             if (_res == NULL && PyErr_Occurred()) {
3515                 p->error_indicator = 1;
3516                 p->level--;
3517                 return NULL;
3518             }
3519             goto done;
3520         }
3521         p->mark = _mark;
3522         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3523                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3524     }
3525     { // import_from_as_names !','
3526         if (p->error_indicator) {
3527             p->level--;
3528             return NULL;
3529         }
3530         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3531         asdl_alias_seq* import_from_as_names_var;
3532         if (
3533             (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3534             &&
3535             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3536         )
3537         {
3538             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3539             _res = import_from_as_names_var;
3540             goto done;
3541         }
3542         p->mark = _mark;
3543         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3544                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3545     }
3546     { // '*'
3547         if (p->error_indicator) {
3548             p->level--;
3549             return NULL;
3550         }
3551         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3552         Token * _literal;
3553         if (
3554             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3555         )
3556         {
3557             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3558             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3559             if (_token == NULL) {
3560                 p->level--;
3561                 return NULL;
3562             }
3563             int _end_lineno = _token->end_lineno;
3564             UNUSED(_end_lineno); // Only used by EXTRA macro
3565             int _end_col_offset = _token->end_col_offset;
3566             UNUSED(_end_col_offset); // Only used by EXTRA macro
3567             _res = ( asdl_alias_seq * ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3568             if (_res == NULL && PyErr_Occurred()) {
3569                 p->error_indicator = 1;
3570                 p->level--;
3571                 return NULL;
3572             }
3573             goto done;
3574         }
3575         p->mark = _mark;
3576         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3577                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3578     }
3579     if (p->call_invalid_rules) { // invalid_import_from_targets
3580         if (p->error_indicator) {
3581             p->level--;
3582             return NULL;
3583         }
3584         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3585         void *invalid_import_from_targets_var;
3586         if (
3587             (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3588         )
3589         {
3590             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3591             _res = invalid_import_from_targets_var;
3592             goto done;
3593         }
3594         p->mark = _mark;
3595         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3596                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3597     }
3598     _res = NULL;
3599   done:
3600     p->level--;
3601     return _res;
3602 }
3603 
3604 // import_from_as_names: ','.import_from_as_name+
3605 static asdl_alias_seq*
import_from_as_names_rule(Parser * p)3606 import_from_as_names_rule(Parser *p)
3607 {
3608     if (p->level++ == MAXSTACK) {
3609         p->error_indicator = 1;
3610         PyErr_NoMemory();
3611     }
3612     if (p->error_indicator) {
3613         p->level--;
3614         return NULL;
3615     }
3616     asdl_alias_seq* _res = NULL;
3617     int _mark = p->mark;
3618     { // ','.import_from_as_name+
3619         if (p->error_indicator) {
3620             p->level--;
3621             return NULL;
3622         }
3623         D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3624         asdl_alias_seq* a;
3625         if (
3626             (a = (asdl_alias_seq*)_gather_33_rule(p))  // ','.import_from_as_name+
3627         )
3628         {
3629             D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3630             _res = a;
3631             if (_res == NULL && PyErr_Occurred()) {
3632                 p->error_indicator = 1;
3633                 p->level--;
3634                 return NULL;
3635             }
3636             goto done;
3637         }
3638         p->mark = _mark;
3639         D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3640                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3641     }
3642     _res = NULL;
3643   done:
3644     p->level--;
3645     return _res;
3646 }
3647 
3648 // import_from_as_name: NAME ['as' NAME]
3649 static alias_ty
import_from_as_name_rule(Parser * p)3650 import_from_as_name_rule(Parser *p)
3651 {
3652     if (p->level++ == MAXSTACK) {
3653         p->error_indicator = 1;
3654         PyErr_NoMemory();
3655     }
3656     if (p->error_indicator) {
3657         p->level--;
3658         return NULL;
3659     }
3660     alias_ty _res = NULL;
3661     int _mark = p->mark;
3662     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3663         p->error_indicator = 1;
3664         p->level--;
3665         return NULL;
3666     }
3667     int _start_lineno = p->tokens[_mark]->lineno;
3668     UNUSED(_start_lineno); // Only used by EXTRA macro
3669     int _start_col_offset = p->tokens[_mark]->col_offset;
3670     UNUSED(_start_col_offset); // Only used by EXTRA macro
3671     { // NAME ['as' NAME]
3672         if (p->error_indicator) {
3673             p->level--;
3674             return NULL;
3675         }
3676         D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3677         expr_ty a;
3678         void *b;
3679         if (
3680             (a = _PyPegen_name_token(p))  // NAME
3681             &&
3682             (b = _tmp_35_rule(p), !p->error_indicator)  // ['as' NAME]
3683         )
3684         {
3685             D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3686             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3687             if (_token == NULL) {
3688                 p->level--;
3689                 return NULL;
3690             }
3691             int _end_lineno = _token->end_lineno;
3692             UNUSED(_end_lineno); // Only used by EXTRA macro
3693             int _end_col_offset = _token->end_col_offset;
3694             UNUSED(_end_col_offset); // Only used by EXTRA macro
3695             _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3696             if (_res == NULL && PyErr_Occurred()) {
3697                 p->error_indicator = 1;
3698                 p->level--;
3699                 return NULL;
3700             }
3701             goto done;
3702         }
3703         p->mark = _mark;
3704         D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3705                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3706     }
3707     _res = NULL;
3708   done:
3709     p->level--;
3710     return _res;
3711 }
3712 
3713 // dotted_as_names: ','.dotted_as_name+
3714 static asdl_alias_seq*
dotted_as_names_rule(Parser * p)3715 dotted_as_names_rule(Parser *p)
3716 {
3717     if (p->level++ == MAXSTACK) {
3718         p->error_indicator = 1;
3719         PyErr_NoMemory();
3720     }
3721     if (p->error_indicator) {
3722         p->level--;
3723         return NULL;
3724     }
3725     asdl_alias_seq* _res = NULL;
3726     int _mark = p->mark;
3727     { // ','.dotted_as_name+
3728         if (p->error_indicator) {
3729             p->level--;
3730             return NULL;
3731         }
3732         D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3733         asdl_alias_seq* a;
3734         if (
3735             (a = (asdl_alias_seq*)_gather_36_rule(p))  // ','.dotted_as_name+
3736         )
3737         {
3738             D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3739             _res = a;
3740             if (_res == NULL && PyErr_Occurred()) {
3741                 p->error_indicator = 1;
3742                 p->level--;
3743                 return NULL;
3744             }
3745             goto done;
3746         }
3747         p->mark = _mark;
3748         D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3749                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
3750     }
3751     _res = NULL;
3752   done:
3753     p->level--;
3754     return _res;
3755 }
3756 
3757 // dotted_as_name: dotted_name ['as' NAME]
3758 static alias_ty
dotted_as_name_rule(Parser * p)3759 dotted_as_name_rule(Parser *p)
3760 {
3761     if (p->level++ == MAXSTACK) {
3762         p->error_indicator = 1;
3763         PyErr_NoMemory();
3764     }
3765     if (p->error_indicator) {
3766         p->level--;
3767         return NULL;
3768     }
3769     alias_ty _res = NULL;
3770     int _mark = p->mark;
3771     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3772         p->error_indicator = 1;
3773         p->level--;
3774         return NULL;
3775     }
3776     int _start_lineno = p->tokens[_mark]->lineno;
3777     UNUSED(_start_lineno); // Only used by EXTRA macro
3778     int _start_col_offset = p->tokens[_mark]->col_offset;
3779     UNUSED(_start_col_offset); // Only used by EXTRA macro
3780     { // dotted_name ['as' NAME]
3781         if (p->error_indicator) {
3782             p->level--;
3783             return NULL;
3784         }
3785         D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
3786         expr_ty a;
3787         void *b;
3788         if (
3789             (a = dotted_name_rule(p))  // dotted_name
3790             &&
3791             (b = _tmp_38_rule(p), !p->error_indicator)  // ['as' NAME]
3792         )
3793         {
3794             D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
3795             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3796             if (_token == NULL) {
3797                 p->level--;
3798                 return NULL;
3799             }
3800             int _end_lineno = _token->end_lineno;
3801             UNUSED(_end_lineno); // Only used by EXTRA macro
3802             int _end_col_offset = _token->end_col_offset;
3803             UNUSED(_end_col_offset); // Only used by EXTRA macro
3804             _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3805             if (_res == NULL && PyErr_Occurred()) {
3806                 p->error_indicator = 1;
3807                 p->level--;
3808                 return NULL;
3809             }
3810             goto done;
3811         }
3812         p->mark = _mark;
3813         D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3814                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
3815     }
3816     _res = NULL;
3817   done:
3818     p->level--;
3819     return _res;
3820 }
3821 
3822 // Left-recursive
3823 // dotted_name: dotted_name '.' NAME | NAME
3824 static expr_ty dotted_name_raw(Parser *);
3825 static expr_ty
dotted_name_rule(Parser * p)3826 dotted_name_rule(Parser *p)
3827 {
3828     if (p->level++ == MAXSTACK) {
3829         p->error_indicator = 1;
3830         PyErr_NoMemory();
3831     }
3832     expr_ty _res = NULL;
3833     if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
3834         p->level--;
3835         return _res;
3836     }
3837     int _mark = p->mark;
3838     int _resmark = p->mark;
3839     while (1) {
3840         int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
3841         if (tmpvar_0) {
3842             p->level--;
3843             return _res;
3844         }
3845         p->mark = _mark;
3846         p->in_raw_rule++;
3847         void *_raw = dotted_name_raw(p);
3848         p->in_raw_rule--;
3849         if (p->error_indicator) {
3850             p->level--;
3851             return NULL;
3852         }
3853         if (_raw == NULL || p->mark <= _resmark)
3854             break;
3855         _resmark = p->mark;
3856         _res = _raw;
3857     }
3858     p->mark = _resmark;
3859     p->level--;
3860     return _res;
3861 }
3862 static expr_ty
dotted_name_raw(Parser * p)3863 dotted_name_raw(Parser *p)
3864 {
3865     if (p->level++ == MAXSTACK) {
3866         p->error_indicator = 1;
3867         PyErr_NoMemory();
3868     }
3869     if (p->error_indicator) {
3870         p->level--;
3871         return NULL;
3872     }
3873     expr_ty _res = NULL;
3874     int _mark = p->mark;
3875     { // dotted_name '.' NAME
3876         if (p->error_indicator) {
3877             p->level--;
3878             return NULL;
3879         }
3880         D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
3881         Token * _literal;
3882         expr_ty a;
3883         expr_ty b;
3884         if (
3885             (a = dotted_name_rule(p))  // dotted_name
3886             &&
3887             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
3888             &&
3889             (b = _PyPegen_name_token(p))  // NAME
3890         )
3891         {
3892             D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
3893             _res = _PyPegen_join_names_with_dot ( p , a , b );
3894             if (_res == NULL && PyErr_Occurred()) {
3895                 p->error_indicator = 1;
3896                 p->level--;
3897                 return NULL;
3898             }
3899             goto done;
3900         }
3901         p->mark = _mark;
3902         D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3903                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
3904     }
3905     { // NAME
3906         if (p->error_indicator) {
3907             p->level--;
3908             return NULL;
3909         }
3910         D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
3911         expr_ty name_var;
3912         if (
3913             (name_var = _PyPegen_name_token(p))  // NAME
3914         )
3915         {
3916             D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
3917             _res = name_var;
3918             goto done;
3919         }
3920         p->mark = _mark;
3921         D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3922                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
3923     }
3924     _res = NULL;
3925   done:
3926     p->level--;
3927     return _res;
3928 }
3929 
3930 // if_stmt:
3931 //     | invalid_if_stmt
3932 //     | 'if' named_expression ':' block elif_stmt
3933 //     | 'if' named_expression ':' block else_block?
3934 static stmt_ty
if_stmt_rule(Parser * p)3935 if_stmt_rule(Parser *p)
3936 {
3937     if (p->level++ == MAXSTACK) {
3938         p->error_indicator = 1;
3939         PyErr_NoMemory();
3940     }
3941     if (p->error_indicator) {
3942         p->level--;
3943         return NULL;
3944     }
3945     stmt_ty _res = NULL;
3946     int _mark = p->mark;
3947     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3948         p->error_indicator = 1;
3949         p->level--;
3950         return NULL;
3951     }
3952     int _start_lineno = p->tokens[_mark]->lineno;
3953     UNUSED(_start_lineno); // Only used by EXTRA macro
3954     int _start_col_offset = p->tokens[_mark]->col_offset;
3955     UNUSED(_start_col_offset); // Only used by EXTRA macro
3956     if (p->call_invalid_rules) { // invalid_if_stmt
3957         if (p->error_indicator) {
3958             p->level--;
3959             return NULL;
3960         }
3961         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
3962         void *invalid_if_stmt_var;
3963         if (
3964             (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
3965         )
3966         {
3967             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
3968             _res = invalid_if_stmt_var;
3969             goto done;
3970         }
3971         p->mark = _mark;
3972         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3973                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
3974     }
3975     { // 'if' named_expression ':' block elif_stmt
3976         if (p->error_indicator) {
3977             p->level--;
3978             return NULL;
3979         }
3980         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
3981         Token * _keyword;
3982         Token * _literal;
3983         expr_ty a;
3984         asdl_stmt_seq* b;
3985         stmt_ty c;
3986         if (
3987             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
3988             &&
3989             (a = named_expression_rule(p))  // named_expression
3990             &&
3991             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
3992             &&
3993             (b = block_rule(p))  // block
3994             &&
3995             (c = elif_stmt_rule(p))  // elif_stmt
3996         )
3997         {
3998             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
3999             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4000             if (_token == NULL) {
4001                 p->level--;
4002                 return NULL;
4003             }
4004             int _end_lineno = _token->end_lineno;
4005             UNUSED(_end_lineno); // Only used by EXTRA macro
4006             int _end_col_offset = _token->end_col_offset;
4007             UNUSED(_end_col_offset); // Only used by EXTRA macro
4008             _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq * , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
4009             if (_res == NULL && PyErr_Occurred()) {
4010                 p->error_indicator = 1;
4011                 p->level--;
4012                 return NULL;
4013             }
4014             goto done;
4015         }
4016         p->mark = _mark;
4017         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4018                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
4019     }
4020     { // 'if' named_expression ':' block else_block?
4021         if (p->error_indicator) {
4022             p->level--;
4023             return NULL;
4024         }
4025         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
4026         Token * _keyword;
4027         Token * _literal;
4028         expr_ty a;
4029         asdl_stmt_seq* b;
4030         void *c;
4031         if (
4032             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
4033             &&
4034             (a = named_expression_rule(p))  // named_expression
4035             &&
4036             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4037             &&
4038             (b = block_rule(p))  // block
4039             &&
4040             (c = else_block_rule(p), !p->error_indicator)  // else_block?
4041         )
4042         {
4043             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
4044             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4045             if (_token == NULL) {
4046                 p->level--;
4047                 return NULL;
4048             }
4049             int _end_lineno = _token->end_lineno;
4050             UNUSED(_end_lineno); // Only used by EXTRA macro
4051             int _end_col_offset = _token->end_col_offset;
4052             UNUSED(_end_col_offset); // Only used by EXTRA macro
4053             _res = _PyAST_If ( a , b , c , EXTRA );
4054             if (_res == NULL && PyErr_Occurred()) {
4055                 p->error_indicator = 1;
4056                 p->level--;
4057                 return NULL;
4058             }
4059             goto done;
4060         }
4061         p->mark = _mark;
4062         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4063                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
4064     }
4065     _res = NULL;
4066   done:
4067     p->level--;
4068     return _res;
4069 }
4070 
4071 // elif_stmt:
4072 //     | invalid_elif_stmt
4073 //     | 'elif' named_expression ':' block elif_stmt
4074 //     | 'elif' named_expression ':' block else_block?
4075 static stmt_ty
elif_stmt_rule(Parser * p)4076 elif_stmt_rule(Parser *p)
4077 {
4078     if (p->level++ == MAXSTACK) {
4079         p->error_indicator = 1;
4080         PyErr_NoMemory();
4081     }
4082     if (p->error_indicator) {
4083         p->level--;
4084         return NULL;
4085     }
4086     stmt_ty _res = NULL;
4087     int _mark = p->mark;
4088     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4089         p->error_indicator = 1;
4090         p->level--;
4091         return NULL;
4092     }
4093     int _start_lineno = p->tokens[_mark]->lineno;
4094     UNUSED(_start_lineno); // Only used by EXTRA macro
4095     int _start_col_offset = p->tokens[_mark]->col_offset;
4096     UNUSED(_start_col_offset); // Only used by EXTRA macro
4097     if (p->call_invalid_rules) { // invalid_elif_stmt
4098         if (p->error_indicator) {
4099             p->level--;
4100             return NULL;
4101         }
4102         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
4103         void *invalid_elif_stmt_var;
4104         if (
4105             (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
4106         )
4107         {
4108             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
4109             _res = invalid_elif_stmt_var;
4110             goto done;
4111         }
4112         p->mark = _mark;
4113         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4114                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
4115     }
4116     { // 'elif' named_expression ':' block elif_stmt
4117         if (p->error_indicator) {
4118             p->level--;
4119             return NULL;
4120         }
4121         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
4122         Token * _keyword;
4123         Token * _literal;
4124         expr_ty a;
4125         asdl_stmt_seq* b;
4126         stmt_ty c;
4127         if (
4128             (_keyword = _PyPegen_expect_token(p, 515))  // token='elif'
4129             &&
4130             (a = named_expression_rule(p))  // named_expression
4131             &&
4132             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4133             &&
4134             (b = block_rule(p))  // block
4135             &&
4136             (c = elif_stmt_rule(p))  // elif_stmt
4137         )
4138         {
4139             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
4140             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4141             if (_token == NULL) {
4142                 p->level--;
4143                 return NULL;
4144             }
4145             int _end_lineno = _token->end_lineno;
4146             UNUSED(_end_lineno); // Only used by EXTRA macro
4147             int _end_col_offset = _token->end_col_offset;
4148             UNUSED(_end_col_offset); // Only used by EXTRA macro
4149             _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq * , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
4150             if (_res == NULL && PyErr_Occurred()) {
4151                 p->error_indicator = 1;
4152                 p->level--;
4153                 return NULL;
4154             }
4155             goto done;
4156         }
4157         p->mark = _mark;
4158         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4159                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
4160     }
4161     { // 'elif' named_expression ':' block else_block?
4162         if (p->error_indicator) {
4163             p->level--;
4164             return NULL;
4165         }
4166         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
4167         Token * _keyword;
4168         Token * _literal;
4169         expr_ty a;
4170         asdl_stmt_seq* b;
4171         void *c;
4172         if (
4173             (_keyword = _PyPegen_expect_token(p, 515))  // token='elif'
4174             &&
4175             (a = named_expression_rule(p))  // named_expression
4176             &&
4177             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4178             &&
4179             (b = block_rule(p))  // block
4180             &&
4181             (c = else_block_rule(p), !p->error_indicator)  // else_block?
4182         )
4183         {
4184             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
4185             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4186             if (_token == NULL) {
4187                 p->level--;
4188                 return NULL;
4189             }
4190             int _end_lineno = _token->end_lineno;
4191             UNUSED(_end_lineno); // Only used by EXTRA macro
4192             int _end_col_offset = _token->end_col_offset;
4193             UNUSED(_end_col_offset); // Only used by EXTRA macro
4194             _res = _PyAST_If ( a , b , c , EXTRA );
4195             if (_res == NULL && PyErr_Occurred()) {
4196                 p->error_indicator = 1;
4197                 p->level--;
4198                 return NULL;
4199             }
4200             goto done;
4201         }
4202         p->mark = _mark;
4203         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4204                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
4205     }
4206     _res = NULL;
4207   done:
4208     p->level--;
4209     return _res;
4210 }
4211 
4212 // else_block: invalid_else_stmt | 'else' &&':' block
4213 static asdl_stmt_seq*
else_block_rule(Parser * p)4214 else_block_rule(Parser *p)
4215 {
4216     if (p->level++ == MAXSTACK) {
4217         p->error_indicator = 1;
4218         PyErr_NoMemory();
4219     }
4220     if (p->error_indicator) {
4221         p->level--;
4222         return NULL;
4223     }
4224     asdl_stmt_seq* _res = NULL;
4225     int _mark = p->mark;
4226     if (p->call_invalid_rules) { // invalid_else_stmt
4227         if (p->error_indicator) {
4228             p->level--;
4229             return NULL;
4230         }
4231         D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
4232         void *invalid_else_stmt_var;
4233         if (
4234             (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
4235         )
4236         {
4237             D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
4238             _res = invalid_else_stmt_var;
4239             goto done;
4240         }
4241         p->mark = _mark;
4242         D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
4243                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
4244     }
4245     { // 'else' &&':' block
4246         if (p->error_indicator) {
4247             p->level--;
4248             return NULL;
4249         }
4250         D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
4251         Token * _keyword;
4252         Token * _literal;
4253         asdl_stmt_seq* b;
4254         if (
4255             (_keyword = _PyPegen_expect_token(p, 516))  // token='else'
4256             &&
4257             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4258             &&
4259             (b = block_rule(p))  // block
4260         )
4261         {
4262             D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
4263             _res = b;
4264             if (_res == NULL && PyErr_Occurred()) {
4265                 p->error_indicator = 1;
4266                 p->level--;
4267                 return NULL;
4268             }
4269             goto done;
4270         }
4271         p->mark = _mark;
4272         D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
4273                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
4274     }
4275     _res = NULL;
4276   done:
4277     p->level--;
4278     return _res;
4279 }
4280 
4281 // while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
4282 static stmt_ty
while_stmt_rule(Parser * p)4283 while_stmt_rule(Parser *p)
4284 {
4285     if (p->level++ == MAXSTACK) {
4286         p->error_indicator = 1;
4287         PyErr_NoMemory();
4288     }
4289     if (p->error_indicator) {
4290         p->level--;
4291         return NULL;
4292     }
4293     stmt_ty _res = NULL;
4294     int _mark = p->mark;
4295     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4296         p->error_indicator = 1;
4297         p->level--;
4298         return NULL;
4299     }
4300     int _start_lineno = p->tokens[_mark]->lineno;
4301     UNUSED(_start_lineno); // Only used by EXTRA macro
4302     int _start_col_offset = p->tokens[_mark]->col_offset;
4303     UNUSED(_start_col_offset); // Only used by EXTRA macro
4304     if (p->call_invalid_rules) { // invalid_while_stmt
4305         if (p->error_indicator) {
4306             p->level--;
4307             return NULL;
4308         }
4309         D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
4310         void *invalid_while_stmt_var;
4311         if (
4312             (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
4313         )
4314         {
4315             D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
4316             _res = invalid_while_stmt_var;
4317             goto done;
4318         }
4319         p->mark = _mark;
4320         D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4321                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
4322     }
4323     { // 'while' named_expression ':' block else_block?
4324         if (p->error_indicator) {
4325             p->level--;
4326             return NULL;
4327         }
4328         D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
4329         Token * _keyword;
4330         Token * _literal;
4331         expr_ty a;
4332         asdl_stmt_seq* b;
4333         void *c;
4334         if (
4335             (_keyword = _PyPegen_expect_token(p, 512))  // token='while'
4336             &&
4337             (a = named_expression_rule(p))  // named_expression
4338             &&
4339             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4340             &&
4341             (b = block_rule(p))  // block
4342             &&
4343             (c = else_block_rule(p), !p->error_indicator)  // else_block?
4344         )
4345         {
4346             D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
4347             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4348             if (_token == NULL) {
4349                 p->level--;
4350                 return NULL;
4351             }
4352             int _end_lineno = _token->end_lineno;
4353             UNUSED(_end_lineno); // Only used by EXTRA macro
4354             int _end_col_offset = _token->end_col_offset;
4355             UNUSED(_end_col_offset); // Only used by EXTRA macro
4356             _res = _PyAST_While ( a , b , c , EXTRA );
4357             if (_res == NULL && PyErr_Occurred()) {
4358                 p->error_indicator = 1;
4359                 p->level--;
4360                 return NULL;
4361             }
4362             goto done;
4363         }
4364         p->mark = _mark;
4365         D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4366                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
4367     }
4368     _res = NULL;
4369   done:
4370     p->level--;
4371     return _res;
4372 }
4373 
4374 // for_stmt:
4375 //     | invalid_for_stmt
4376 //     | 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
4377 //     | ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
4378 //     | invalid_for_target
4379 static stmt_ty
for_stmt_rule(Parser * p)4380 for_stmt_rule(Parser *p)
4381 {
4382     if (p->level++ == MAXSTACK) {
4383         p->error_indicator = 1;
4384         PyErr_NoMemory();
4385     }
4386     if (p->error_indicator) {
4387         p->level--;
4388         return NULL;
4389     }
4390     stmt_ty _res = NULL;
4391     int _mark = p->mark;
4392     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4393         p->error_indicator = 1;
4394         p->level--;
4395         return NULL;
4396     }
4397     int _start_lineno = p->tokens[_mark]->lineno;
4398     UNUSED(_start_lineno); // Only used by EXTRA macro
4399     int _start_col_offset = p->tokens[_mark]->col_offset;
4400     UNUSED(_start_col_offset); // Only used by EXTRA macro
4401     if (p->call_invalid_rules) { // invalid_for_stmt
4402         if (p->error_indicator) {
4403             p->level--;
4404             return NULL;
4405         }
4406         D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
4407         void *invalid_for_stmt_var;
4408         if (
4409             (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
4410         )
4411         {
4412             D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
4413             _res = invalid_for_stmt_var;
4414             goto done;
4415         }
4416         p->mark = _mark;
4417         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4418                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
4419     }
4420     { // 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
4421         if (p->error_indicator) {
4422             p->level--;
4423             return NULL;
4424         }
4425         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?"));
4426         int _cut_var = 0;
4427         Token * _keyword;
4428         Token * _keyword_1;
4429         Token * _literal;
4430         asdl_stmt_seq* b;
4431         void *el;
4432         expr_ty ex;
4433         expr_ty t;
4434         void *tc;
4435         if (
4436             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
4437             &&
4438             (t = star_targets_rule(p))  // star_targets
4439             &&
4440             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
4441             &&
4442             (_cut_var = 1)
4443             &&
4444             (ex = star_expressions_rule(p))  // star_expressions
4445             &&
4446             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4447             &&
4448             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4449             &&
4450             (b = block_rule(p))  // block
4451             &&
4452             (el = else_block_rule(p), !p->error_indicator)  // else_block?
4453         )
4454         {
4455             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?"));
4456             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4457             if (_token == NULL) {
4458                 p->level--;
4459                 return NULL;
4460             }
4461             int _end_lineno = _token->end_lineno;
4462             UNUSED(_end_lineno); // Only used by EXTRA macro
4463             int _end_col_offset = _token->end_col_offset;
4464             UNUSED(_end_col_offset); // Only used by EXTRA macro
4465             _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4466             if (_res == NULL && PyErr_Occurred()) {
4467                 p->error_indicator = 1;
4468                 p->level--;
4469                 return NULL;
4470             }
4471             goto done;
4472         }
4473         p->mark = _mark;
4474         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4475                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?"));
4476         if (_cut_var) {
4477             p->level--;
4478             return NULL;
4479         }
4480     }
4481     { // ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
4482         if (p->error_indicator) {
4483             p->level--;
4484             return NULL;
4485         }
4486         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?"));
4487         int _cut_var = 0;
4488         Token * _keyword;
4489         Token * _keyword_1;
4490         Token * _literal;
4491         Token * async_var;
4492         asdl_stmt_seq* b;
4493         void *el;
4494         expr_ty ex;
4495         expr_ty t;
4496         void *tc;
4497         if (
4498             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
4499             &&
4500             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
4501             &&
4502             (t = star_targets_rule(p))  // star_targets
4503             &&
4504             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
4505             &&
4506             (_cut_var = 1)
4507             &&
4508             (ex = star_expressions_rule(p))  // star_expressions
4509             &&
4510             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4511             &&
4512             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4513             &&
4514             (b = block_rule(p))  // block
4515             &&
4516             (el = else_block_rule(p), !p->error_indicator)  // else_block?
4517         )
4518         {
4519             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?"));
4520             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4521             if (_token == NULL) {
4522                 p->level--;
4523                 return NULL;
4524             }
4525             int _end_lineno = _token->end_lineno;
4526             UNUSED(_end_lineno); // Only used by EXTRA macro
4527             int _end_col_offset = _token->end_col_offset;
4528             UNUSED(_end_col_offset); // Only used by EXTRA macro
4529             _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
4530             if (_res == NULL && PyErr_Occurred()) {
4531                 p->error_indicator = 1;
4532                 p->level--;
4533                 return NULL;
4534             }
4535             goto done;
4536         }
4537         p->mark = _mark;
4538         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4539                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?"));
4540         if (_cut_var) {
4541             p->level--;
4542             return NULL;
4543         }
4544     }
4545     if (p->call_invalid_rules) { // invalid_for_target
4546         if (p->error_indicator) {
4547             p->level--;
4548             return NULL;
4549         }
4550         D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
4551         void *invalid_for_target_var;
4552         if (
4553             (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
4554         )
4555         {
4556             D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
4557             _res = invalid_for_target_var;
4558             goto done;
4559         }
4560         p->mark = _mark;
4561         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4562                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
4563     }
4564     _res = NULL;
4565   done:
4566     p->level--;
4567     return _res;
4568 }
4569 
4570 // with_stmt:
4571 //     | invalid_with_stmt_indent
4572 //     | 'with' '(' ','.with_item+ ','? ')' ':' block
4573 //     | 'with' ','.with_item+ ':' TYPE_COMMENT? block
4574 //     | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
4575 //     | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
4576 //     | invalid_with_stmt
4577 static stmt_ty
with_stmt_rule(Parser * p)4578 with_stmt_rule(Parser *p)
4579 {
4580     if (p->level++ == MAXSTACK) {
4581         p->error_indicator = 1;
4582         PyErr_NoMemory();
4583     }
4584     if (p->error_indicator) {
4585         p->level--;
4586         return NULL;
4587     }
4588     stmt_ty _res = NULL;
4589     int _mark = p->mark;
4590     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4591         p->error_indicator = 1;
4592         p->level--;
4593         return NULL;
4594     }
4595     int _start_lineno = p->tokens[_mark]->lineno;
4596     UNUSED(_start_lineno); // Only used by EXTRA macro
4597     int _start_col_offset = p->tokens[_mark]->col_offset;
4598     UNUSED(_start_col_offset); // Only used by EXTRA macro
4599     if (p->call_invalid_rules) { // invalid_with_stmt_indent
4600         if (p->error_indicator) {
4601             p->level--;
4602             return NULL;
4603         }
4604         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
4605         void *invalid_with_stmt_indent_var;
4606         if (
4607             (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
4608         )
4609         {
4610             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
4611             _res = invalid_with_stmt_indent_var;
4612             goto done;
4613         }
4614         p->mark = _mark;
4615         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4616                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
4617     }
4618     { // 'with' '(' ','.with_item+ ','? ')' ':' block
4619         if (p->error_indicator) {
4620             p->level--;
4621             return NULL;
4622         }
4623         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
4624         Token * _keyword;
4625         Token * _literal;
4626         Token * _literal_1;
4627         Token * _literal_2;
4628         void *_opt_var;
4629         UNUSED(_opt_var); // Silence compiler warnings
4630         asdl_withitem_seq* a;
4631         asdl_stmt_seq* b;
4632         if (
4633             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
4634             &&
4635             (_literal = _PyPegen_expect_token(p, 7))  // token='('
4636             &&
4637             (a = (asdl_withitem_seq*)_gather_39_rule(p))  // ','.with_item+
4638             &&
4639             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
4640             &&
4641             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4642             &&
4643             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4644             &&
4645             (b = block_rule(p))  // block
4646         )
4647         {
4648             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
4649             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4650             if (_token == NULL) {
4651                 p->level--;
4652                 return NULL;
4653             }
4654             int _end_lineno = _token->end_lineno;
4655             UNUSED(_end_lineno); // Only used by EXTRA macro
4656             int _end_col_offset = _token->end_col_offset;
4657             UNUSED(_end_col_offset); // Only used by EXTRA macro
4658             _res = _PyAST_With ( a , b , NULL , EXTRA );
4659             if (_res == NULL && PyErr_Occurred()) {
4660                 p->error_indicator = 1;
4661                 p->level--;
4662                 return NULL;
4663             }
4664             goto done;
4665         }
4666         p->mark = _mark;
4667         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4668                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
4669     }
4670     { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
4671         if (p->error_indicator) {
4672             p->level--;
4673             return NULL;
4674         }
4675         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4676         Token * _keyword;
4677         Token * _literal;
4678         asdl_withitem_seq* a;
4679         asdl_stmt_seq* b;
4680         void *tc;
4681         if (
4682             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
4683             &&
4684             (a = (asdl_withitem_seq*)_gather_41_rule(p))  // ','.with_item+
4685             &&
4686             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4687             &&
4688             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4689             &&
4690             (b = block_rule(p))  // block
4691         )
4692         {
4693             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4694             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4695             if (_token == NULL) {
4696                 p->level--;
4697                 return NULL;
4698             }
4699             int _end_lineno = _token->end_lineno;
4700             UNUSED(_end_lineno); // Only used by EXTRA macro
4701             int _end_col_offset = _token->end_col_offset;
4702             UNUSED(_end_col_offset); // Only used by EXTRA macro
4703             _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4704             if (_res == NULL && PyErr_Occurred()) {
4705                 p->error_indicator = 1;
4706                 p->level--;
4707                 return NULL;
4708             }
4709             goto done;
4710         }
4711         p->mark = _mark;
4712         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4713                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4714     }
4715     { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
4716         if (p->error_indicator) {
4717             p->level--;
4718             return NULL;
4719         }
4720         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
4721         Token * _keyword;
4722         Token * _literal;
4723         Token * _literal_1;
4724         Token * _literal_2;
4725         void *_opt_var;
4726         UNUSED(_opt_var); // Silence compiler warnings
4727         asdl_withitem_seq* a;
4728         Token * async_var;
4729         asdl_stmt_seq* b;
4730         if (
4731             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
4732             &&
4733             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
4734             &&
4735             (_literal = _PyPegen_expect_token(p, 7))  // token='('
4736             &&
4737             (a = (asdl_withitem_seq*)_gather_43_rule(p))  // ','.with_item+
4738             &&
4739             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
4740             &&
4741             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4742             &&
4743             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4744             &&
4745             (b = block_rule(p))  // block
4746         )
4747         {
4748             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
4749             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4750             if (_token == NULL) {
4751                 p->level--;
4752                 return NULL;
4753             }
4754             int _end_lineno = _token->end_lineno;
4755             UNUSED(_end_lineno); // Only used by EXTRA macro
4756             int _end_col_offset = _token->end_col_offset;
4757             UNUSED(_end_col_offset); // Only used by EXTRA macro
4758             _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
4759             if (_res == NULL && PyErr_Occurred()) {
4760                 p->error_indicator = 1;
4761                 p->level--;
4762                 return NULL;
4763             }
4764             goto done;
4765         }
4766         p->mark = _mark;
4767         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4768                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
4769     }
4770     { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
4771         if (p->error_indicator) {
4772             p->level--;
4773             return NULL;
4774         }
4775         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4776         Token * _keyword;
4777         Token * _literal;
4778         asdl_withitem_seq* a;
4779         Token * async_var;
4780         asdl_stmt_seq* b;
4781         void *tc;
4782         if (
4783             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
4784             &&
4785             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
4786             &&
4787             (a = (asdl_withitem_seq*)_gather_45_rule(p))  // ','.with_item+
4788             &&
4789             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4790             &&
4791             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4792             &&
4793             (b = block_rule(p))  // block
4794         )
4795         {
4796             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4797             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4798             if (_token == NULL) {
4799                 p->level--;
4800                 return NULL;
4801             }
4802             int _end_lineno = _token->end_lineno;
4803             UNUSED(_end_lineno); // Only used by EXTRA macro
4804             int _end_col_offset = _token->end_col_offset;
4805             UNUSED(_end_col_offset); // Only used by EXTRA macro
4806             _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
4807             if (_res == NULL && PyErr_Occurred()) {
4808                 p->error_indicator = 1;
4809                 p->level--;
4810                 return NULL;
4811             }
4812             goto done;
4813         }
4814         p->mark = _mark;
4815         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4816                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4817     }
4818     if (p->call_invalid_rules) { // invalid_with_stmt
4819         if (p->error_indicator) {
4820             p->level--;
4821             return NULL;
4822         }
4823         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
4824         void *invalid_with_stmt_var;
4825         if (
4826             (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
4827         )
4828         {
4829             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
4830             _res = invalid_with_stmt_var;
4831             goto done;
4832         }
4833         p->mark = _mark;
4834         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4835                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
4836     }
4837     _res = NULL;
4838   done:
4839     p->level--;
4840     return _res;
4841 }
4842 
4843 // with_item:
4844 //     | expression 'as' star_target &(',' | ')' | ':')
4845 //     | invalid_with_item
4846 //     | expression
4847 static withitem_ty
with_item_rule(Parser * p)4848 with_item_rule(Parser *p)
4849 {
4850     if (p->level++ == MAXSTACK) {
4851         p->error_indicator = 1;
4852         PyErr_NoMemory();
4853     }
4854     if (p->error_indicator) {
4855         p->level--;
4856         return NULL;
4857     }
4858     withitem_ty _res = NULL;
4859     int _mark = p->mark;
4860     { // expression 'as' star_target &(',' | ')' | ':')
4861         if (p->error_indicator) {
4862             p->level--;
4863             return NULL;
4864         }
4865         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
4866         Token * _keyword;
4867         expr_ty e;
4868         expr_ty t;
4869         if (
4870             (e = expression_rule(p))  // expression
4871             &&
4872             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
4873             &&
4874             (t = star_target_rule(p))  // star_target
4875             &&
4876             _PyPegen_lookahead(1, _tmp_47_rule, p)
4877         )
4878         {
4879             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
4880             _res = _PyAST_withitem ( e , t , p -> arena );
4881             if (_res == NULL && PyErr_Occurred()) {
4882                 p->error_indicator = 1;
4883                 p->level--;
4884                 return NULL;
4885             }
4886             goto done;
4887         }
4888         p->mark = _mark;
4889         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
4890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
4891     }
4892     if (p->call_invalid_rules) { // invalid_with_item
4893         if (p->error_indicator) {
4894             p->level--;
4895             return NULL;
4896         }
4897         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
4898         void *invalid_with_item_var;
4899         if (
4900             (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
4901         )
4902         {
4903             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
4904             _res = invalid_with_item_var;
4905             goto done;
4906         }
4907         p->mark = _mark;
4908         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
4909                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
4910     }
4911     { // expression
4912         if (p->error_indicator) {
4913             p->level--;
4914             return NULL;
4915         }
4916         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
4917         expr_ty e;
4918         if (
4919             (e = expression_rule(p))  // expression
4920         )
4921         {
4922             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
4923             _res = _PyAST_withitem ( e , NULL , p -> arena );
4924             if (_res == NULL && PyErr_Occurred()) {
4925                 p->error_indicator = 1;
4926                 p->level--;
4927                 return NULL;
4928             }
4929             goto done;
4930         }
4931         p->mark = _mark;
4932         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
4933                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
4934     }
4935     _res = NULL;
4936   done:
4937     p->level--;
4938     return _res;
4939 }
4940 
4941 // try_stmt:
4942 //     | invalid_try_stmt
4943 //     | 'try' &&':' block finally_block
4944 //     | 'try' &&':' block except_block+ else_block? finally_block?
4945 static stmt_ty
try_stmt_rule(Parser * p)4946 try_stmt_rule(Parser *p)
4947 {
4948     if (p->level++ == MAXSTACK) {
4949         p->error_indicator = 1;
4950         PyErr_NoMemory();
4951     }
4952     if (p->error_indicator) {
4953         p->level--;
4954         return NULL;
4955     }
4956     stmt_ty _res = NULL;
4957     int _mark = p->mark;
4958     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4959         p->error_indicator = 1;
4960         p->level--;
4961         return NULL;
4962     }
4963     int _start_lineno = p->tokens[_mark]->lineno;
4964     UNUSED(_start_lineno); // Only used by EXTRA macro
4965     int _start_col_offset = p->tokens[_mark]->col_offset;
4966     UNUSED(_start_col_offset); // Only used by EXTRA macro
4967     if (p->call_invalid_rules) { // invalid_try_stmt
4968         if (p->error_indicator) {
4969             p->level--;
4970             return NULL;
4971         }
4972         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
4973         void *invalid_try_stmt_var;
4974         if (
4975             (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
4976         )
4977         {
4978             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
4979             _res = invalid_try_stmt_var;
4980             goto done;
4981         }
4982         p->mark = _mark;
4983         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4984                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
4985     }
4986     { // 'try' &&':' block finally_block
4987         if (p->error_indicator) {
4988             p->level--;
4989             return NULL;
4990         }
4991         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
4992         Token * _keyword;
4993         Token * _literal;
4994         asdl_stmt_seq* b;
4995         asdl_stmt_seq* f;
4996         if (
4997             (_keyword = _PyPegen_expect_token(p, 511))  // token='try'
4998             &&
4999             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
5000             &&
5001             (b = block_rule(p))  // block
5002             &&
5003             (f = finally_block_rule(p))  // finally_block
5004         )
5005         {
5006             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
5007             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5008             if (_token == NULL) {
5009                 p->level--;
5010                 return NULL;
5011             }
5012             int _end_lineno = _token->end_lineno;
5013             UNUSED(_end_lineno); // Only used by EXTRA macro
5014             int _end_col_offset = _token->end_col_offset;
5015             UNUSED(_end_col_offset); // Only used by EXTRA macro
5016             _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
5017             if (_res == NULL && PyErr_Occurred()) {
5018                 p->error_indicator = 1;
5019                 p->level--;
5020                 return NULL;
5021             }
5022             goto done;
5023         }
5024         p->mark = _mark;
5025         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5026                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
5027     }
5028     { // 'try' &&':' block except_block+ else_block? finally_block?
5029         if (p->error_indicator) {
5030             p->level--;
5031             return NULL;
5032         }
5033         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
5034         Token * _keyword;
5035         Token * _literal;
5036         asdl_stmt_seq* b;
5037         void *el;
5038         asdl_excepthandler_seq* ex;
5039         void *f;
5040         if (
5041             (_keyword = _PyPegen_expect_token(p, 511))  // token='try'
5042             &&
5043             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
5044             &&
5045             (b = block_rule(p))  // block
5046             &&
5047             (ex = (asdl_excepthandler_seq*)_loop1_48_rule(p))  // except_block+
5048             &&
5049             (el = else_block_rule(p), !p->error_indicator)  // else_block?
5050             &&
5051             (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
5052         )
5053         {
5054             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
5055             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5056             if (_token == NULL) {
5057                 p->level--;
5058                 return NULL;
5059             }
5060             int _end_lineno = _token->end_lineno;
5061             UNUSED(_end_lineno); // Only used by EXTRA macro
5062             int _end_col_offset = _token->end_col_offset;
5063             UNUSED(_end_col_offset); // Only used by EXTRA macro
5064             _res = _PyAST_Try ( b , ex , el , f , EXTRA );
5065             if (_res == NULL && PyErr_Occurred()) {
5066                 p->error_indicator = 1;
5067                 p->level--;
5068                 return NULL;
5069             }
5070             goto done;
5071         }
5072         p->mark = _mark;
5073         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5074                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
5075     }
5076     _res = NULL;
5077   done:
5078     p->level--;
5079     return _res;
5080 }
5081 
5082 // except_block:
5083 //     | invalid_except_stmt_indent
5084 //     | 'except' expression ['as' NAME] ':' block
5085 //     | 'except' ':' block
5086 //     | invalid_except_stmt
5087 static excepthandler_ty
except_block_rule(Parser * p)5088 except_block_rule(Parser *p)
5089 {
5090     if (p->level++ == MAXSTACK) {
5091         p->error_indicator = 1;
5092         PyErr_NoMemory();
5093     }
5094     if (p->error_indicator) {
5095         p->level--;
5096         return NULL;
5097     }
5098     excepthandler_ty _res = NULL;
5099     int _mark = p->mark;
5100     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5101         p->error_indicator = 1;
5102         p->level--;
5103         return NULL;
5104     }
5105     int _start_lineno = p->tokens[_mark]->lineno;
5106     UNUSED(_start_lineno); // Only used by EXTRA macro
5107     int _start_col_offset = p->tokens[_mark]->col_offset;
5108     UNUSED(_start_col_offset); // Only used by EXTRA macro
5109     if (p->call_invalid_rules) { // invalid_except_stmt_indent
5110         if (p->error_indicator) {
5111             p->level--;
5112             return NULL;
5113         }
5114         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
5115         void *invalid_except_stmt_indent_var;
5116         if (
5117             (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
5118         )
5119         {
5120             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
5121             _res = invalid_except_stmt_indent_var;
5122             goto done;
5123         }
5124         p->mark = _mark;
5125         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
5126                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
5127     }
5128     { // 'except' expression ['as' NAME] ':' block
5129         if (p->error_indicator) {
5130             p->level--;
5131             return NULL;
5132         }
5133         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
5134         Token * _keyword;
5135         Token * _literal;
5136         asdl_stmt_seq* b;
5137         expr_ty e;
5138         void *t;
5139         if (
5140             (_keyword = _PyPegen_expect_token(p, 521))  // token='except'
5141             &&
5142             (e = expression_rule(p))  // expression
5143             &&
5144             (t = _tmp_49_rule(p), !p->error_indicator)  // ['as' NAME]
5145             &&
5146             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5147             &&
5148             (b = block_rule(p))  // block
5149         )
5150         {
5151             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
5152             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5153             if (_token == NULL) {
5154                 p->level--;
5155                 return NULL;
5156             }
5157             int _end_lineno = _token->end_lineno;
5158             UNUSED(_end_lineno); // Only used by EXTRA macro
5159             int _end_col_offset = _token->end_col_offset;
5160             UNUSED(_end_col_offset); // Only used by EXTRA macro
5161             _res = _PyAST_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
5162             if (_res == NULL && PyErr_Occurred()) {
5163                 p->error_indicator = 1;
5164                 p->level--;
5165                 return NULL;
5166             }
5167             goto done;
5168         }
5169         p->mark = _mark;
5170         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
5171                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
5172     }
5173     { // 'except' ':' block
5174         if (p->error_indicator) {
5175             p->level--;
5176             return NULL;
5177         }
5178         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
5179         Token * _keyword;
5180         Token * _literal;
5181         asdl_stmt_seq* b;
5182         if (
5183             (_keyword = _PyPegen_expect_token(p, 521))  // token='except'
5184             &&
5185             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5186             &&
5187             (b = block_rule(p))  // block
5188         )
5189         {
5190             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
5191             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5192             if (_token == NULL) {
5193                 p->level--;
5194                 return NULL;
5195             }
5196             int _end_lineno = _token->end_lineno;
5197             UNUSED(_end_lineno); // Only used by EXTRA macro
5198             int _end_col_offset = _token->end_col_offset;
5199             UNUSED(_end_col_offset); // Only used by EXTRA macro
5200             _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
5201             if (_res == NULL && PyErr_Occurred()) {
5202                 p->error_indicator = 1;
5203                 p->level--;
5204                 return NULL;
5205             }
5206             goto done;
5207         }
5208         p->mark = _mark;
5209         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
5210                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
5211     }
5212     if (p->call_invalid_rules) { // invalid_except_stmt
5213         if (p->error_indicator) {
5214             p->level--;
5215             return NULL;
5216         }
5217         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
5218         void *invalid_except_stmt_var;
5219         if (
5220             (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
5221         )
5222         {
5223             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
5224             _res = invalid_except_stmt_var;
5225             goto done;
5226         }
5227         p->mark = _mark;
5228         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
5229                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
5230     }
5231     _res = NULL;
5232   done:
5233     p->level--;
5234     return _res;
5235 }
5236 
5237 // finally_block: invalid_finally_stmt | 'finally' &&':' block
5238 static asdl_stmt_seq*
finally_block_rule(Parser * p)5239 finally_block_rule(Parser *p)
5240 {
5241     if (p->level++ == MAXSTACK) {
5242         p->error_indicator = 1;
5243         PyErr_NoMemory();
5244     }
5245     if (p->error_indicator) {
5246         p->level--;
5247         return NULL;
5248     }
5249     asdl_stmt_seq* _res = NULL;
5250     int _mark = p->mark;
5251     if (p->call_invalid_rules) { // invalid_finally_stmt
5252         if (p->error_indicator) {
5253             p->level--;
5254             return NULL;
5255         }
5256         D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
5257         void *invalid_finally_stmt_var;
5258         if (
5259             (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
5260         )
5261         {
5262             D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
5263             _res = invalid_finally_stmt_var;
5264             goto done;
5265         }
5266         p->mark = _mark;
5267         D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
5268                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
5269     }
5270     { // 'finally' &&':' block
5271         if (p->error_indicator) {
5272             p->level--;
5273             return NULL;
5274         }
5275         D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
5276         Token * _keyword;
5277         Token * _literal;
5278         asdl_stmt_seq* a;
5279         if (
5280             (_keyword = _PyPegen_expect_token(p, 522))  // token='finally'
5281             &&
5282             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
5283             &&
5284             (a = block_rule(p))  // block
5285         )
5286         {
5287             D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
5288             _res = a;
5289             if (_res == NULL && PyErr_Occurred()) {
5290                 p->error_indicator = 1;
5291                 p->level--;
5292                 return NULL;
5293             }
5294             goto done;
5295         }
5296         p->mark = _mark;
5297         D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
5298                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
5299     }
5300     _res = NULL;
5301   done:
5302     p->level--;
5303     return _res;
5304 }
5305 
5306 // match_stmt:
5307 //     | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
5308 //     | invalid_match_stmt
5309 static stmt_ty
match_stmt_rule(Parser * p)5310 match_stmt_rule(Parser *p)
5311 {
5312     if (p->level++ == MAXSTACK) {
5313         p->error_indicator = 1;
5314         PyErr_NoMemory();
5315     }
5316     if (p->error_indicator) {
5317         p->level--;
5318         return NULL;
5319     }
5320     stmt_ty _res = NULL;
5321     int _mark = p->mark;
5322     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5323         p->error_indicator = 1;
5324         p->level--;
5325         return NULL;
5326     }
5327     int _start_lineno = p->tokens[_mark]->lineno;
5328     UNUSED(_start_lineno); // Only used by EXTRA macro
5329     int _start_col_offset = p->tokens[_mark]->col_offset;
5330     UNUSED(_start_col_offset); // Only used by EXTRA macro
5331     { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
5332         if (p->error_indicator) {
5333             p->level--;
5334             return NULL;
5335         }
5336         D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
5337         expr_ty _keyword;
5338         Token * _literal;
5339         asdl_match_case_seq* cases;
5340         Token * dedent_var;
5341         Token * indent_var;
5342         Token * newline_var;
5343         expr_ty subject;
5344         if (
5345             (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
5346             &&
5347             (subject = subject_expr_rule(p))  // subject_expr
5348             &&
5349             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5350             &&
5351             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
5352             &&
5353             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
5354             &&
5355             (cases = (asdl_match_case_seq*)_loop1_50_rule(p))  // case_block+
5356             &&
5357             (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
5358         )
5359         {
5360             D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
5361             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5362             if (_token == NULL) {
5363                 p->level--;
5364                 return NULL;
5365             }
5366             int _end_lineno = _token->end_lineno;
5367             UNUSED(_end_lineno); // Only used by EXTRA macro
5368             int _end_col_offset = _token->end_col_offset;
5369             UNUSED(_end_col_offset); // Only used by EXTRA macro
5370             _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
5371             if (_res == NULL && PyErr_Occurred()) {
5372                 p->error_indicator = 1;
5373                 p->level--;
5374                 return NULL;
5375             }
5376             goto done;
5377         }
5378         p->mark = _mark;
5379         D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5380                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
5381     }
5382     if (p->call_invalid_rules) { // invalid_match_stmt
5383         if (p->error_indicator) {
5384             p->level--;
5385             return NULL;
5386         }
5387         D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
5388         void *invalid_match_stmt_var;
5389         if (
5390             (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
5391         )
5392         {
5393             D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
5394             _res = invalid_match_stmt_var;
5395             goto done;
5396         }
5397         p->mark = _mark;
5398         D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5399                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
5400     }
5401     _res = NULL;
5402   done:
5403     p->level--;
5404     return _res;
5405 }
5406 
5407 // subject_expr: star_named_expression ',' star_named_expressions? | named_expression
5408 static expr_ty
subject_expr_rule(Parser * p)5409 subject_expr_rule(Parser *p)
5410 {
5411     if (p->level++ == MAXSTACK) {
5412         p->error_indicator = 1;
5413         PyErr_NoMemory();
5414     }
5415     if (p->error_indicator) {
5416         p->level--;
5417         return NULL;
5418     }
5419     expr_ty _res = NULL;
5420     int _mark = p->mark;
5421     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5422         p->error_indicator = 1;
5423         p->level--;
5424         return NULL;
5425     }
5426     int _start_lineno = p->tokens[_mark]->lineno;
5427     UNUSED(_start_lineno); // Only used by EXTRA macro
5428     int _start_col_offset = p->tokens[_mark]->col_offset;
5429     UNUSED(_start_col_offset); // Only used by EXTRA macro
5430     { // star_named_expression ',' star_named_expressions?
5431         if (p->error_indicator) {
5432             p->level--;
5433             return NULL;
5434         }
5435         D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
5436         Token * _literal;
5437         expr_ty value;
5438         void *values;
5439         if (
5440             (value = star_named_expression_rule(p))  // star_named_expression
5441             &&
5442             (_literal = _PyPegen_expect_token(p, 12))  // token=','
5443             &&
5444             (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
5445         )
5446         {
5447             D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
5448             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5449             if (_token == NULL) {
5450                 p->level--;
5451                 return NULL;
5452             }
5453             int _end_lineno = _token->end_lineno;
5454             UNUSED(_end_lineno); // Only used by EXTRA macro
5455             int _end_col_offset = _token->end_col_offset;
5456             UNUSED(_end_col_offset); // Only used by EXTRA macro
5457             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
5458             if (_res == NULL && PyErr_Occurred()) {
5459                 p->error_indicator = 1;
5460                 p->level--;
5461                 return NULL;
5462             }
5463             goto done;
5464         }
5465         p->mark = _mark;
5466         D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
5467                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
5468     }
5469     { // named_expression
5470         if (p->error_indicator) {
5471             p->level--;
5472             return NULL;
5473         }
5474         D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
5475         expr_ty named_expression_var;
5476         if (
5477             (named_expression_var = named_expression_rule(p))  // named_expression
5478         )
5479         {
5480             D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
5481             _res = named_expression_var;
5482             goto done;
5483         }
5484         p->mark = _mark;
5485         D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
5486                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
5487     }
5488     _res = NULL;
5489   done:
5490     p->level--;
5491     return _res;
5492 }
5493 
5494 // case_block: invalid_case_block | "case" patterns guard? ':' block
5495 static match_case_ty
case_block_rule(Parser * p)5496 case_block_rule(Parser *p)
5497 {
5498     if (p->level++ == MAXSTACK) {
5499         p->error_indicator = 1;
5500         PyErr_NoMemory();
5501     }
5502     if (p->error_indicator) {
5503         p->level--;
5504         return NULL;
5505     }
5506     match_case_ty _res = NULL;
5507     int _mark = p->mark;
5508     if (p->call_invalid_rules) { // invalid_case_block
5509         if (p->error_indicator) {
5510             p->level--;
5511             return NULL;
5512         }
5513         D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
5514         void *invalid_case_block_var;
5515         if (
5516             (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
5517         )
5518         {
5519             D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
5520             _res = invalid_case_block_var;
5521             goto done;
5522         }
5523         p->mark = _mark;
5524         D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
5525                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
5526     }
5527     { // "case" patterns guard? ':' block
5528         if (p->error_indicator) {
5529             p->level--;
5530             return NULL;
5531         }
5532         D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
5533         expr_ty _keyword;
5534         Token * _literal;
5535         asdl_stmt_seq* body;
5536         void *guard;
5537         pattern_ty pattern;
5538         if (
5539             (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
5540             &&
5541             (pattern = patterns_rule(p))  // patterns
5542             &&
5543             (guard = guard_rule(p), !p->error_indicator)  // guard?
5544             &&
5545             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5546             &&
5547             (body = block_rule(p))  // block
5548         )
5549         {
5550             D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
5551             _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
5552             if (_res == NULL && PyErr_Occurred()) {
5553                 p->error_indicator = 1;
5554                 p->level--;
5555                 return NULL;
5556             }
5557             goto done;
5558         }
5559         p->mark = _mark;
5560         D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
5561                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
5562     }
5563     _res = NULL;
5564   done:
5565     p->level--;
5566     return _res;
5567 }
5568 
5569 // guard: 'if' named_expression
5570 static expr_ty
guard_rule(Parser * p)5571 guard_rule(Parser *p)
5572 {
5573     if (p->level++ == MAXSTACK) {
5574         p->error_indicator = 1;
5575         PyErr_NoMemory();
5576     }
5577     if (p->error_indicator) {
5578         p->level--;
5579         return NULL;
5580     }
5581     expr_ty _res = NULL;
5582     int _mark = p->mark;
5583     { // 'if' named_expression
5584         if (p->error_indicator) {
5585             p->level--;
5586             return NULL;
5587         }
5588         D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
5589         Token * _keyword;
5590         expr_ty guard;
5591         if (
5592             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
5593             &&
5594             (guard = named_expression_rule(p))  // named_expression
5595         )
5596         {
5597             D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
5598             _res = guard;
5599             if (_res == NULL && PyErr_Occurred()) {
5600                 p->error_indicator = 1;
5601                 p->level--;
5602                 return NULL;
5603             }
5604             goto done;
5605         }
5606         p->mark = _mark;
5607         D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
5608                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
5609     }
5610     _res = NULL;
5611   done:
5612     p->level--;
5613     return _res;
5614 }
5615 
5616 // patterns: open_sequence_pattern | pattern
5617 static pattern_ty
patterns_rule(Parser * p)5618 patterns_rule(Parser *p)
5619 {
5620     if (p->level++ == MAXSTACK) {
5621         p->error_indicator = 1;
5622         PyErr_NoMemory();
5623     }
5624     if (p->error_indicator) {
5625         p->level--;
5626         return NULL;
5627     }
5628     pattern_ty _res = NULL;
5629     int _mark = p->mark;
5630     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5631         p->error_indicator = 1;
5632         p->level--;
5633         return NULL;
5634     }
5635     int _start_lineno = p->tokens[_mark]->lineno;
5636     UNUSED(_start_lineno); // Only used by EXTRA macro
5637     int _start_col_offset = p->tokens[_mark]->col_offset;
5638     UNUSED(_start_col_offset); // Only used by EXTRA macro
5639     { // open_sequence_pattern
5640         if (p->error_indicator) {
5641             p->level--;
5642             return NULL;
5643         }
5644         D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
5645         asdl_pattern_seq* patterns;
5646         if (
5647             (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
5648         )
5649         {
5650             D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
5651             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5652             if (_token == NULL) {
5653                 p->level--;
5654                 return NULL;
5655             }
5656             int _end_lineno = _token->end_lineno;
5657             UNUSED(_end_lineno); // Only used by EXTRA macro
5658             int _end_col_offset = _token->end_col_offset;
5659             UNUSED(_end_col_offset); // Only used by EXTRA macro
5660             _res = _PyAST_MatchSequence ( patterns , EXTRA );
5661             if (_res == NULL && PyErr_Occurred()) {
5662                 p->error_indicator = 1;
5663                 p->level--;
5664                 return NULL;
5665             }
5666             goto done;
5667         }
5668         p->mark = _mark;
5669         D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
5670                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
5671     }
5672     { // pattern
5673         if (p->error_indicator) {
5674             p->level--;
5675             return NULL;
5676         }
5677         D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
5678         pattern_ty pattern_var;
5679         if (
5680             (pattern_var = pattern_rule(p))  // pattern
5681         )
5682         {
5683             D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
5684             _res = pattern_var;
5685             goto done;
5686         }
5687         p->mark = _mark;
5688         D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
5689                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
5690     }
5691     _res = NULL;
5692   done:
5693     p->level--;
5694     return _res;
5695 }
5696 
5697 // pattern: as_pattern | or_pattern
5698 static pattern_ty
pattern_rule(Parser * p)5699 pattern_rule(Parser *p)
5700 {
5701     if (p->level++ == MAXSTACK) {
5702         p->error_indicator = 1;
5703         PyErr_NoMemory();
5704     }
5705     if (p->error_indicator) {
5706         p->level--;
5707         return NULL;
5708     }
5709     pattern_ty _res = NULL;
5710     int _mark = p->mark;
5711     { // as_pattern
5712         if (p->error_indicator) {
5713             p->level--;
5714             return NULL;
5715         }
5716         D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
5717         pattern_ty as_pattern_var;
5718         if (
5719             (as_pattern_var = as_pattern_rule(p))  // as_pattern
5720         )
5721         {
5722             D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
5723             _res = as_pattern_var;
5724             goto done;
5725         }
5726         p->mark = _mark;
5727         D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
5728                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
5729     }
5730     { // or_pattern
5731         if (p->error_indicator) {
5732             p->level--;
5733             return NULL;
5734         }
5735         D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
5736         pattern_ty or_pattern_var;
5737         if (
5738             (or_pattern_var = or_pattern_rule(p))  // or_pattern
5739         )
5740         {
5741             D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
5742             _res = or_pattern_var;
5743             goto done;
5744         }
5745         p->mark = _mark;
5746         D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
5747                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
5748     }
5749     _res = NULL;
5750   done:
5751     p->level--;
5752     return _res;
5753 }
5754 
5755 // as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
5756 static pattern_ty
as_pattern_rule(Parser * p)5757 as_pattern_rule(Parser *p)
5758 {
5759     if (p->level++ == MAXSTACK) {
5760         p->error_indicator = 1;
5761         PyErr_NoMemory();
5762     }
5763     if (p->error_indicator) {
5764         p->level--;
5765         return NULL;
5766     }
5767     pattern_ty _res = NULL;
5768     int _mark = p->mark;
5769     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5770         p->error_indicator = 1;
5771         p->level--;
5772         return NULL;
5773     }
5774     int _start_lineno = p->tokens[_mark]->lineno;
5775     UNUSED(_start_lineno); // Only used by EXTRA macro
5776     int _start_col_offset = p->tokens[_mark]->col_offset;
5777     UNUSED(_start_col_offset); // Only used by EXTRA macro
5778     { // or_pattern 'as' pattern_capture_target
5779         if (p->error_indicator) {
5780             p->level--;
5781             return NULL;
5782         }
5783         D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
5784         Token * _keyword;
5785         pattern_ty pattern;
5786         expr_ty target;
5787         if (
5788             (pattern = or_pattern_rule(p))  // or_pattern
5789             &&
5790             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
5791             &&
5792             (target = pattern_capture_target_rule(p))  // pattern_capture_target
5793         )
5794         {
5795             D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
5796             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5797             if (_token == NULL) {
5798                 p->level--;
5799                 return NULL;
5800             }
5801             int _end_lineno = _token->end_lineno;
5802             UNUSED(_end_lineno); // Only used by EXTRA macro
5803             int _end_col_offset = _token->end_col_offset;
5804             UNUSED(_end_col_offset); // Only used by EXTRA macro
5805             _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
5806             if (_res == NULL && PyErr_Occurred()) {
5807                 p->error_indicator = 1;
5808                 p->level--;
5809                 return NULL;
5810             }
5811             goto done;
5812         }
5813         p->mark = _mark;
5814         D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5815                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
5816     }
5817     if (p->call_invalid_rules) { // invalid_as_pattern
5818         if (p->error_indicator) {
5819             p->level--;
5820             return NULL;
5821         }
5822         D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
5823         void *invalid_as_pattern_var;
5824         if (
5825             (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
5826         )
5827         {
5828             D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
5829             _res = invalid_as_pattern_var;
5830             goto done;
5831         }
5832         p->mark = _mark;
5833         D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5834                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
5835     }
5836     _res = NULL;
5837   done:
5838     p->level--;
5839     return _res;
5840 }
5841 
5842 // or_pattern: '|'.closed_pattern+
5843 static pattern_ty
or_pattern_rule(Parser * p)5844 or_pattern_rule(Parser *p)
5845 {
5846     if (p->level++ == MAXSTACK) {
5847         p->error_indicator = 1;
5848         PyErr_NoMemory();
5849     }
5850     if (p->error_indicator) {
5851         p->level--;
5852         return NULL;
5853     }
5854     pattern_ty _res = NULL;
5855     int _mark = p->mark;
5856     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5857         p->error_indicator = 1;
5858         p->level--;
5859         return NULL;
5860     }
5861     int _start_lineno = p->tokens[_mark]->lineno;
5862     UNUSED(_start_lineno); // Only used by EXTRA macro
5863     int _start_col_offset = p->tokens[_mark]->col_offset;
5864     UNUSED(_start_col_offset); // Only used by EXTRA macro
5865     { // '|'.closed_pattern+
5866         if (p->error_indicator) {
5867             p->level--;
5868             return NULL;
5869         }
5870         D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
5871         asdl_pattern_seq* patterns;
5872         if (
5873             (patterns = (asdl_pattern_seq*)_gather_51_rule(p))  // '|'.closed_pattern+
5874         )
5875         {
5876             D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
5877             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5878             if (_token == NULL) {
5879                 p->level--;
5880                 return NULL;
5881             }
5882             int _end_lineno = _token->end_lineno;
5883             UNUSED(_end_lineno); // Only used by EXTRA macro
5884             int _end_col_offset = _token->end_col_offset;
5885             UNUSED(_end_col_offset); // Only used by EXTRA macro
5886             _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
5887             if (_res == NULL && PyErr_Occurred()) {
5888                 p->error_indicator = 1;
5889                 p->level--;
5890                 return NULL;
5891             }
5892             goto done;
5893         }
5894         p->mark = _mark;
5895         D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5896                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
5897     }
5898     _res = NULL;
5899   done:
5900     p->level--;
5901     return _res;
5902 }
5903 
5904 // closed_pattern:
5905 //     | literal_pattern
5906 //     | capture_pattern
5907 //     | wildcard_pattern
5908 //     | value_pattern
5909 //     | group_pattern
5910 //     | sequence_pattern
5911 //     | mapping_pattern
5912 //     | class_pattern
5913 static pattern_ty
closed_pattern_rule(Parser * p)5914 closed_pattern_rule(Parser *p)
5915 {
5916     if (p->level++ == MAXSTACK) {
5917         p->error_indicator = 1;
5918         PyErr_NoMemory();
5919     }
5920     if (p->error_indicator) {
5921         p->level--;
5922         return NULL;
5923     }
5924     pattern_ty _res = NULL;
5925     int _mark = p->mark;
5926     { // literal_pattern
5927         if (p->error_indicator) {
5928             p->level--;
5929             return NULL;
5930         }
5931         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
5932         pattern_ty literal_pattern_var;
5933         if (
5934             (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
5935         )
5936         {
5937             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
5938             _res = literal_pattern_var;
5939             goto done;
5940         }
5941         p->mark = _mark;
5942         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5943                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
5944     }
5945     { // capture_pattern
5946         if (p->error_indicator) {
5947             p->level--;
5948             return NULL;
5949         }
5950         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
5951         pattern_ty capture_pattern_var;
5952         if (
5953             (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
5954         )
5955         {
5956             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
5957             _res = capture_pattern_var;
5958             goto done;
5959         }
5960         p->mark = _mark;
5961         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5962                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
5963     }
5964     { // wildcard_pattern
5965         if (p->error_indicator) {
5966             p->level--;
5967             return NULL;
5968         }
5969         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
5970         pattern_ty wildcard_pattern_var;
5971         if (
5972             (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
5973         )
5974         {
5975             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
5976             _res = wildcard_pattern_var;
5977             goto done;
5978         }
5979         p->mark = _mark;
5980         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5981                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
5982     }
5983     { // value_pattern
5984         if (p->error_indicator) {
5985             p->level--;
5986             return NULL;
5987         }
5988         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
5989         pattern_ty value_pattern_var;
5990         if (
5991             (value_pattern_var = value_pattern_rule(p))  // value_pattern
5992         )
5993         {
5994             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
5995             _res = value_pattern_var;
5996             goto done;
5997         }
5998         p->mark = _mark;
5999         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6000                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
6001     }
6002     { // group_pattern
6003         if (p->error_indicator) {
6004             p->level--;
6005             return NULL;
6006         }
6007         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
6008         pattern_ty group_pattern_var;
6009         if (
6010             (group_pattern_var = group_pattern_rule(p))  // group_pattern
6011         )
6012         {
6013             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
6014             _res = group_pattern_var;
6015             goto done;
6016         }
6017         p->mark = _mark;
6018         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6019                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
6020     }
6021     { // sequence_pattern
6022         if (p->error_indicator) {
6023             p->level--;
6024             return NULL;
6025         }
6026         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
6027         pattern_ty sequence_pattern_var;
6028         if (
6029             (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
6030         )
6031         {
6032             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
6033             _res = sequence_pattern_var;
6034             goto done;
6035         }
6036         p->mark = _mark;
6037         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6038                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
6039     }
6040     { // mapping_pattern
6041         if (p->error_indicator) {
6042             p->level--;
6043             return NULL;
6044         }
6045         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
6046         pattern_ty mapping_pattern_var;
6047         if (
6048             (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
6049         )
6050         {
6051             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
6052             _res = mapping_pattern_var;
6053             goto done;
6054         }
6055         p->mark = _mark;
6056         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6057                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
6058     }
6059     { // class_pattern
6060         if (p->error_indicator) {
6061             p->level--;
6062             return NULL;
6063         }
6064         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
6065         pattern_ty class_pattern_var;
6066         if (
6067             (class_pattern_var = class_pattern_rule(p))  // class_pattern
6068         )
6069         {
6070             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
6071             _res = class_pattern_var;
6072             goto done;
6073         }
6074         p->mark = _mark;
6075         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6076                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
6077     }
6078     _res = NULL;
6079   done:
6080     p->level--;
6081     return _res;
6082 }
6083 
6084 // literal_pattern:
6085 //     | signed_number !('+' | '-')
6086 //     | complex_number
6087 //     | strings
6088 //     | 'None'
6089 //     | 'True'
6090 //     | 'False'
6091 static pattern_ty
literal_pattern_rule(Parser * p)6092 literal_pattern_rule(Parser *p)
6093 {
6094     if (p->level++ == MAXSTACK) {
6095         p->error_indicator = 1;
6096         PyErr_NoMemory();
6097     }
6098     if (p->error_indicator) {
6099         p->level--;
6100         return NULL;
6101     }
6102     pattern_ty _res = NULL;
6103     int _mark = p->mark;
6104     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6105         p->error_indicator = 1;
6106         p->level--;
6107         return NULL;
6108     }
6109     int _start_lineno = p->tokens[_mark]->lineno;
6110     UNUSED(_start_lineno); // Only used by EXTRA macro
6111     int _start_col_offset = p->tokens[_mark]->col_offset;
6112     UNUSED(_start_col_offset); // Only used by EXTRA macro
6113     { // signed_number !('+' | '-')
6114         if (p->error_indicator) {
6115             p->level--;
6116             return NULL;
6117         }
6118         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
6119         expr_ty value;
6120         if (
6121             (value = signed_number_rule(p))  // signed_number
6122             &&
6123             _PyPegen_lookahead(0, _tmp_53_rule, p)
6124         )
6125         {
6126             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
6127             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6128             if (_token == NULL) {
6129                 p->level--;
6130                 return NULL;
6131             }
6132             int _end_lineno = _token->end_lineno;
6133             UNUSED(_end_lineno); // Only used by EXTRA macro
6134             int _end_col_offset = _token->end_col_offset;
6135             UNUSED(_end_col_offset); // Only used by EXTRA macro
6136             _res = _PyAST_MatchValue ( value , EXTRA );
6137             if (_res == NULL && PyErr_Occurred()) {
6138                 p->error_indicator = 1;
6139                 p->level--;
6140                 return NULL;
6141             }
6142             goto done;
6143         }
6144         p->mark = _mark;
6145         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6146                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
6147     }
6148     { // complex_number
6149         if (p->error_indicator) {
6150             p->level--;
6151             return NULL;
6152         }
6153         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
6154         expr_ty value;
6155         if (
6156             (value = complex_number_rule(p))  // complex_number
6157         )
6158         {
6159             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
6160             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6161             if (_token == NULL) {
6162                 p->level--;
6163                 return NULL;
6164             }
6165             int _end_lineno = _token->end_lineno;
6166             UNUSED(_end_lineno); // Only used by EXTRA macro
6167             int _end_col_offset = _token->end_col_offset;
6168             UNUSED(_end_col_offset); // Only used by EXTRA macro
6169             _res = _PyAST_MatchValue ( value , EXTRA );
6170             if (_res == NULL && PyErr_Occurred()) {
6171                 p->error_indicator = 1;
6172                 p->level--;
6173                 return NULL;
6174             }
6175             goto done;
6176         }
6177         p->mark = _mark;
6178         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6179                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
6180     }
6181     { // strings
6182         if (p->error_indicator) {
6183             p->level--;
6184             return NULL;
6185         }
6186         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
6187         expr_ty value;
6188         if (
6189             (value = strings_rule(p))  // strings
6190         )
6191         {
6192             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
6193             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6194             if (_token == NULL) {
6195                 p->level--;
6196                 return NULL;
6197             }
6198             int _end_lineno = _token->end_lineno;
6199             UNUSED(_end_lineno); // Only used by EXTRA macro
6200             int _end_col_offset = _token->end_col_offset;
6201             UNUSED(_end_col_offset); // Only used by EXTRA macro
6202             _res = _PyAST_MatchValue ( value , EXTRA );
6203             if (_res == NULL && PyErr_Occurred()) {
6204                 p->error_indicator = 1;
6205                 p->level--;
6206                 return NULL;
6207             }
6208             goto done;
6209         }
6210         p->mark = _mark;
6211         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6212                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
6213     }
6214     { // 'None'
6215         if (p->error_indicator) {
6216             p->level--;
6217             return NULL;
6218         }
6219         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
6220         Token * _keyword;
6221         if (
6222             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
6223         )
6224         {
6225             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
6226             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6227             if (_token == NULL) {
6228                 p->level--;
6229                 return NULL;
6230             }
6231             int _end_lineno = _token->end_lineno;
6232             UNUSED(_end_lineno); // Only used by EXTRA macro
6233             int _end_col_offset = _token->end_col_offset;
6234             UNUSED(_end_col_offset); // Only used by EXTRA macro
6235             _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
6236             if (_res == NULL && PyErr_Occurred()) {
6237                 p->error_indicator = 1;
6238                 p->level--;
6239                 return NULL;
6240             }
6241             goto done;
6242         }
6243         p->mark = _mark;
6244         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6245                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
6246     }
6247     { // 'True'
6248         if (p->error_indicator) {
6249             p->level--;
6250             return NULL;
6251         }
6252         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
6253         Token * _keyword;
6254         if (
6255             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
6256         )
6257         {
6258             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
6259             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6260             if (_token == NULL) {
6261                 p->level--;
6262                 return NULL;
6263             }
6264             int _end_lineno = _token->end_lineno;
6265             UNUSED(_end_lineno); // Only used by EXTRA macro
6266             int _end_col_offset = _token->end_col_offset;
6267             UNUSED(_end_col_offset); // Only used by EXTRA macro
6268             _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
6269             if (_res == NULL && PyErr_Occurred()) {
6270                 p->error_indicator = 1;
6271                 p->level--;
6272                 return NULL;
6273             }
6274             goto done;
6275         }
6276         p->mark = _mark;
6277         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6278                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
6279     }
6280     { // 'False'
6281         if (p->error_indicator) {
6282             p->level--;
6283             return NULL;
6284         }
6285         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
6286         Token * _keyword;
6287         if (
6288             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
6289         )
6290         {
6291             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
6292             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6293             if (_token == NULL) {
6294                 p->level--;
6295                 return NULL;
6296             }
6297             int _end_lineno = _token->end_lineno;
6298             UNUSED(_end_lineno); // Only used by EXTRA macro
6299             int _end_col_offset = _token->end_col_offset;
6300             UNUSED(_end_col_offset); // Only used by EXTRA macro
6301             _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
6302             if (_res == NULL && PyErr_Occurred()) {
6303                 p->error_indicator = 1;
6304                 p->level--;
6305                 return NULL;
6306             }
6307             goto done;
6308         }
6309         p->mark = _mark;
6310         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6311                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
6312     }
6313     _res = NULL;
6314   done:
6315     p->level--;
6316     return _res;
6317 }
6318 
6319 // literal_expr:
6320 //     | signed_number !('+' | '-')
6321 //     | complex_number
6322 //     | strings
6323 //     | 'None'
6324 //     | 'True'
6325 //     | 'False'
6326 static expr_ty
literal_expr_rule(Parser * p)6327 literal_expr_rule(Parser *p)
6328 {
6329     if (p->level++ == MAXSTACK) {
6330         p->error_indicator = 1;
6331         PyErr_NoMemory();
6332     }
6333     if (p->error_indicator) {
6334         p->level--;
6335         return NULL;
6336     }
6337     expr_ty _res = NULL;
6338     int _mark = p->mark;
6339     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6340         p->error_indicator = 1;
6341         p->level--;
6342         return NULL;
6343     }
6344     int _start_lineno = p->tokens[_mark]->lineno;
6345     UNUSED(_start_lineno); // Only used by EXTRA macro
6346     int _start_col_offset = p->tokens[_mark]->col_offset;
6347     UNUSED(_start_col_offset); // Only used by EXTRA macro
6348     { // signed_number !('+' | '-')
6349         if (p->error_indicator) {
6350             p->level--;
6351             return NULL;
6352         }
6353         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
6354         expr_ty signed_number_var;
6355         if (
6356             (signed_number_var = signed_number_rule(p))  // signed_number
6357             &&
6358             _PyPegen_lookahead(0, _tmp_54_rule, p)
6359         )
6360         {
6361             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
6362             _res = signed_number_var;
6363             goto done;
6364         }
6365         p->mark = _mark;
6366         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6367                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
6368     }
6369     { // complex_number
6370         if (p->error_indicator) {
6371             p->level--;
6372             return NULL;
6373         }
6374         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
6375         expr_ty complex_number_var;
6376         if (
6377             (complex_number_var = complex_number_rule(p))  // complex_number
6378         )
6379         {
6380             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
6381             _res = complex_number_var;
6382             goto done;
6383         }
6384         p->mark = _mark;
6385         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6386                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
6387     }
6388     { // strings
6389         if (p->error_indicator) {
6390             p->level--;
6391             return NULL;
6392         }
6393         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
6394         expr_ty strings_var;
6395         if (
6396             (strings_var = strings_rule(p))  // strings
6397         )
6398         {
6399             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
6400             _res = strings_var;
6401             goto done;
6402         }
6403         p->mark = _mark;
6404         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6405                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
6406     }
6407     { // 'None'
6408         if (p->error_indicator) {
6409             p->level--;
6410             return NULL;
6411         }
6412         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
6413         Token * _keyword;
6414         if (
6415             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
6416         )
6417         {
6418             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
6419             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6420             if (_token == NULL) {
6421                 p->level--;
6422                 return NULL;
6423             }
6424             int _end_lineno = _token->end_lineno;
6425             UNUSED(_end_lineno); // Only used by EXTRA macro
6426             int _end_col_offset = _token->end_col_offset;
6427             UNUSED(_end_col_offset); // Only used by EXTRA macro
6428             _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
6429             if (_res == NULL && PyErr_Occurred()) {
6430                 p->error_indicator = 1;
6431                 p->level--;
6432                 return NULL;
6433             }
6434             goto done;
6435         }
6436         p->mark = _mark;
6437         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6438                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
6439     }
6440     { // 'True'
6441         if (p->error_indicator) {
6442             p->level--;
6443             return NULL;
6444         }
6445         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
6446         Token * _keyword;
6447         if (
6448             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
6449         )
6450         {
6451             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
6452             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6453             if (_token == NULL) {
6454                 p->level--;
6455                 return NULL;
6456             }
6457             int _end_lineno = _token->end_lineno;
6458             UNUSED(_end_lineno); // Only used by EXTRA macro
6459             int _end_col_offset = _token->end_col_offset;
6460             UNUSED(_end_col_offset); // Only used by EXTRA macro
6461             _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
6462             if (_res == NULL && PyErr_Occurred()) {
6463                 p->error_indicator = 1;
6464                 p->level--;
6465                 return NULL;
6466             }
6467             goto done;
6468         }
6469         p->mark = _mark;
6470         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6471                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
6472     }
6473     { // 'False'
6474         if (p->error_indicator) {
6475             p->level--;
6476             return NULL;
6477         }
6478         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
6479         Token * _keyword;
6480         if (
6481             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
6482         )
6483         {
6484             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
6485             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6486             if (_token == NULL) {
6487                 p->level--;
6488                 return NULL;
6489             }
6490             int _end_lineno = _token->end_lineno;
6491             UNUSED(_end_lineno); // Only used by EXTRA macro
6492             int _end_col_offset = _token->end_col_offset;
6493             UNUSED(_end_col_offset); // Only used by EXTRA macro
6494             _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
6495             if (_res == NULL && PyErr_Occurred()) {
6496                 p->error_indicator = 1;
6497                 p->level--;
6498                 return NULL;
6499             }
6500             goto done;
6501         }
6502         p->mark = _mark;
6503         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6504                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
6505     }
6506     _res = NULL;
6507   done:
6508     p->level--;
6509     return _res;
6510 }
6511 
6512 // complex_number:
6513 //     | signed_real_number '+' imaginary_number
6514 //     | signed_real_number '-' imaginary_number
6515 static expr_ty
complex_number_rule(Parser * p)6516 complex_number_rule(Parser *p)
6517 {
6518     if (p->level++ == MAXSTACK) {
6519         p->error_indicator = 1;
6520         PyErr_NoMemory();
6521     }
6522     if (p->error_indicator) {
6523         p->level--;
6524         return NULL;
6525     }
6526     expr_ty _res = NULL;
6527     int _mark = p->mark;
6528     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6529         p->error_indicator = 1;
6530         p->level--;
6531         return NULL;
6532     }
6533     int _start_lineno = p->tokens[_mark]->lineno;
6534     UNUSED(_start_lineno); // Only used by EXTRA macro
6535     int _start_col_offset = p->tokens[_mark]->col_offset;
6536     UNUSED(_start_col_offset); // Only used by EXTRA macro
6537     { // signed_real_number '+' imaginary_number
6538         if (p->error_indicator) {
6539             p->level--;
6540             return NULL;
6541         }
6542         D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
6543         Token * _literal;
6544         expr_ty imag;
6545         expr_ty real;
6546         if (
6547             (real = signed_real_number_rule(p))  // signed_real_number
6548             &&
6549             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
6550             &&
6551             (imag = imaginary_number_rule(p))  // imaginary_number
6552         )
6553         {
6554             D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
6555             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6556             if (_token == NULL) {
6557                 p->level--;
6558                 return NULL;
6559             }
6560             int _end_lineno = _token->end_lineno;
6561             UNUSED(_end_lineno); // Only used by EXTRA macro
6562             int _end_col_offset = _token->end_col_offset;
6563             UNUSED(_end_col_offset); // Only used by EXTRA macro
6564             _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
6565             if (_res == NULL && PyErr_Occurred()) {
6566                 p->error_indicator = 1;
6567                 p->level--;
6568                 return NULL;
6569             }
6570             goto done;
6571         }
6572         p->mark = _mark;
6573         D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
6574                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
6575     }
6576     { // signed_real_number '-' imaginary_number
6577         if (p->error_indicator) {
6578             p->level--;
6579             return NULL;
6580         }
6581         D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
6582         Token * _literal;
6583         expr_ty imag;
6584         expr_ty real;
6585         if (
6586             (real = signed_real_number_rule(p))  // signed_real_number
6587             &&
6588             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
6589             &&
6590             (imag = imaginary_number_rule(p))  // imaginary_number
6591         )
6592         {
6593             D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
6594             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6595             if (_token == NULL) {
6596                 p->level--;
6597                 return NULL;
6598             }
6599             int _end_lineno = _token->end_lineno;
6600             UNUSED(_end_lineno); // Only used by EXTRA macro
6601             int _end_col_offset = _token->end_col_offset;
6602             UNUSED(_end_col_offset); // Only used by EXTRA macro
6603             _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
6604             if (_res == NULL && PyErr_Occurred()) {
6605                 p->error_indicator = 1;
6606                 p->level--;
6607                 return NULL;
6608             }
6609             goto done;
6610         }
6611         p->mark = _mark;
6612         D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
6613                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
6614     }
6615     _res = NULL;
6616   done:
6617     p->level--;
6618     return _res;
6619 }
6620 
6621 // signed_number: NUMBER | '-' NUMBER
6622 static expr_ty
signed_number_rule(Parser * p)6623 signed_number_rule(Parser *p)
6624 {
6625     if (p->level++ == MAXSTACK) {
6626         p->error_indicator = 1;
6627         PyErr_NoMemory();
6628     }
6629     if (p->error_indicator) {
6630         p->level--;
6631         return NULL;
6632     }
6633     expr_ty _res = NULL;
6634     int _mark = p->mark;
6635     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6636         p->error_indicator = 1;
6637         p->level--;
6638         return NULL;
6639     }
6640     int _start_lineno = p->tokens[_mark]->lineno;
6641     UNUSED(_start_lineno); // Only used by EXTRA macro
6642     int _start_col_offset = p->tokens[_mark]->col_offset;
6643     UNUSED(_start_col_offset); // Only used by EXTRA macro
6644     { // NUMBER
6645         if (p->error_indicator) {
6646             p->level--;
6647             return NULL;
6648         }
6649         D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6650         expr_ty number_var;
6651         if (
6652             (number_var = _PyPegen_number_token(p))  // NUMBER
6653         )
6654         {
6655             D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6656             _res = number_var;
6657             goto done;
6658         }
6659         p->mark = _mark;
6660         D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
6661                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
6662     }
6663     { // '-' NUMBER
6664         if (p->error_indicator) {
6665             p->level--;
6666             return NULL;
6667         }
6668         D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
6669         Token * _literal;
6670         expr_ty number;
6671         if (
6672             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
6673             &&
6674             (number = _PyPegen_number_token(p))  // NUMBER
6675         )
6676         {
6677             D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
6678             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6679             if (_token == NULL) {
6680                 p->level--;
6681                 return NULL;
6682             }
6683             int _end_lineno = _token->end_lineno;
6684             UNUSED(_end_lineno); // Only used by EXTRA macro
6685             int _end_col_offset = _token->end_col_offset;
6686             UNUSED(_end_col_offset); // Only used by EXTRA macro
6687             _res = _PyAST_UnaryOp ( USub , number , EXTRA );
6688             if (_res == NULL && PyErr_Occurred()) {
6689                 p->error_indicator = 1;
6690                 p->level--;
6691                 return NULL;
6692             }
6693             goto done;
6694         }
6695         p->mark = _mark;
6696         D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
6697                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
6698     }
6699     _res = NULL;
6700   done:
6701     p->level--;
6702     return _res;
6703 }
6704 
6705 // signed_real_number: real_number | '-' real_number
6706 static expr_ty
signed_real_number_rule(Parser * p)6707 signed_real_number_rule(Parser *p)
6708 {
6709     if (p->level++ == MAXSTACK) {
6710         p->error_indicator = 1;
6711         PyErr_NoMemory();
6712     }
6713     if (p->error_indicator) {
6714         p->level--;
6715         return NULL;
6716     }
6717     expr_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         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     { // real_number
6729         if (p->error_indicator) {
6730             p->level--;
6731             return NULL;
6732         }
6733         D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
6734         expr_ty real_number_var;
6735         if (
6736             (real_number_var = real_number_rule(p))  // real_number
6737         )
6738         {
6739             D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
6740             _res = real_number_var;
6741             goto done;
6742         }
6743         p->mark = _mark;
6744         D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
6745                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
6746     }
6747     { // '-' real_number
6748         if (p->error_indicator) {
6749             p->level--;
6750             return NULL;
6751         }
6752         D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
6753         Token * _literal;
6754         expr_ty real;
6755         if (
6756             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
6757             &&
6758             (real = real_number_rule(p))  // real_number
6759         )
6760         {
6761             D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
6762             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6763             if (_token == NULL) {
6764                 p->level--;
6765                 return NULL;
6766             }
6767             int _end_lineno = _token->end_lineno;
6768             UNUSED(_end_lineno); // Only used by EXTRA macro
6769             int _end_col_offset = _token->end_col_offset;
6770             UNUSED(_end_col_offset); // Only used by EXTRA macro
6771             _res = _PyAST_UnaryOp ( USub , real , EXTRA );
6772             if (_res == NULL && PyErr_Occurred()) {
6773                 p->error_indicator = 1;
6774                 p->level--;
6775                 return NULL;
6776             }
6777             goto done;
6778         }
6779         p->mark = _mark;
6780         D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
6781                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
6782     }
6783     _res = NULL;
6784   done:
6785     p->level--;
6786     return _res;
6787 }
6788 
6789 // real_number: NUMBER
6790 static expr_ty
real_number_rule(Parser * p)6791 real_number_rule(Parser *p)
6792 {
6793     if (p->level++ == MAXSTACK) {
6794         p->error_indicator = 1;
6795         PyErr_NoMemory();
6796     }
6797     if (p->error_indicator) {
6798         p->level--;
6799         return NULL;
6800     }
6801     expr_ty _res = NULL;
6802     int _mark = p->mark;
6803     { // NUMBER
6804         if (p->error_indicator) {
6805             p->level--;
6806             return NULL;
6807         }
6808         D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6809         expr_ty real;
6810         if (
6811             (real = _PyPegen_number_token(p))  // NUMBER
6812         )
6813         {
6814             D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6815             _res = _PyPegen_ensure_real ( p , real );
6816             if (_res == NULL && PyErr_Occurred()) {
6817                 p->error_indicator = 1;
6818                 p->level--;
6819                 return NULL;
6820             }
6821             goto done;
6822         }
6823         p->mark = _mark;
6824         D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
6825                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
6826     }
6827     _res = NULL;
6828   done:
6829     p->level--;
6830     return _res;
6831 }
6832 
6833 // imaginary_number: NUMBER
6834 static expr_ty
imaginary_number_rule(Parser * p)6835 imaginary_number_rule(Parser *p)
6836 {
6837     if (p->level++ == MAXSTACK) {
6838         p->error_indicator = 1;
6839         PyErr_NoMemory();
6840     }
6841     if (p->error_indicator) {
6842         p->level--;
6843         return NULL;
6844     }
6845     expr_ty _res = NULL;
6846     int _mark = p->mark;
6847     { // NUMBER
6848         if (p->error_indicator) {
6849             p->level--;
6850             return NULL;
6851         }
6852         D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6853         expr_ty imag;
6854         if (
6855             (imag = _PyPegen_number_token(p))  // NUMBER
6856         )
6857         {
6858             D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6859             _res = _PyPegen_ensure_imaginary ( p , imag );
6860             if (_res == NULL && PyErr_Occurred()) {
6861                 p->error_indicator = 1;
6862                 p->level--;
6863                 return NULL;
6864             }
6865             goto done;
6866         }
6867         p->mark = _mark;
6868         D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
6869                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
6870     }
6871     _res = NULL;
6872   done:
6873     p->level--;
6874     return _res;
6875 }
6876 
6877 // capture_pattern: pattern_capture_target
6878 static pattern_ty
capture_pattern_rule(Parser * p)6879 capture_pattern_rule(Parser *p)
6880 {
6881     if (p->level++ == MAXSTACK) {
6882         p->error_indicator = 1;
6883         PyErr_NoMemory();
6884     }
6885     if (p->error_indicator) {
6886         p->level--;
6887         return NULL;
6888     }
6889     pattern_ty _res = NULL;
6890     int _mark = p->mark;
6891     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6892         p->error_indicator = 1;
6893         p->level--;
6894         return NULL;
6895     }
6896     int _start_lineno = p->tokens[_mark]->lineno;
6897     UNUSED(_start_lineno); // Only used by EXTRA macro
6898     int _start_col_offset = p->tokens[_mark]->col_offset;
6899     UNUSED(_start_col_offset); // Only used by EXTRA macro
6900     { // pattern_capture_target
6901         if (p->error_indicator) {
6902             p->level--;
6903             return NULL;
6904         }
6905         D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
6906         expr_ty target;
6907         if (
6908             (target = pattern_capture_target_rule(p))  // pattern_capture_target
6909         )
6910         {
6911             D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
6912             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6913             if (_token == NULL) {
6914                 p->level--;
6915                 return NULL;
6916             }
6917             int _end_lineno = _token->end_lineno;
6918             UNUSED(_end_lineno); // Only used by EXTRA macro
6919             int _end_col_offset = _token->end_col_offset;
6920             UNUSED(_end_col_offset); // Only used by EXTRA macro
6921             _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
6922             if (_res == NULL && PyErr_Occurred()) {
6923                 p->error_indicator = 1;
6924                 p->level--;
6925                 return NULL;
6926             }
6927             goto done;
6928         }
6929         p->mark = _mark;
6930         D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6931                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
6932     }
6933     _res = NULL;
6934   done:
6935     p->level--;
6936     return _res;
6937 }
6938 
6939 // pattern_capture_target: !"_" NAME !('.' | '(' | '=')
6940 static expr_ty
pattern_capture_target_rule(Parser * p)6941 pattern_capture_target_rule(Parser *p)
6942 {
6943     if (p->level++ == MAXSTACK) {
6944         p->error_indicator = 1;
6945         PyErr_NoMemory();
6946     }
6947     if (p->error_indicator) {
6948         p->level--;
6949         return NULL;
6950     }
6951     expr_ty _res = NULL;
6952     int _mark = p->mark;
6953     { // !"_" NAME !('.' | '(' | '=')
6954         if (p->error_indicator) {
6955             p->level--;
6956             return NULL;
6957         }
6958         D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
6959         expr_ty name;
6960         if (
6961             _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
6962             &&
6963             (name = _PyPegen_name_token(p))  // NAME
6964             &&
6965             _PyPegen_lookahead(0, _tmp_55_rule, p)
6966         )
6967         {
6968             D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
6969             _res = _PyPegen_set_expr_context ( p , name , Store );
6970             if (_res == NULL && PyErr_Occurred()) {
6971                 p->error_indicator = 1;
6972                 p->level--;
6973                 return NULL;
6974             }
6975             goto done;
6976         }
6977         p->mark = _mark;
6978         D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
6979                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
6980     }
6981     _res = NULL;
6982   done:
6983     p->level--;
6984     return _res;
6985 }
6986 
6987 // wildcard_pattern: "_"
6988 static pattern_ty
wildcard_pattern_rule(Parser * p)6989 wildcard_pattern_rule(Parser *p)
6990 {
6991     if (p->level++ == MAXSTACK) {
6992         p->error_indicator = 1;
6993         PyErr_NoMemory();
6994     }
6995     if (p->error_indicator) {
6996         p->level--;
6997         return NULL;
6998     }
6999     pattern_ty _res = NULL;
7000     int _mark = p->mark;
7001     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7002         p->error_indicator = 1;
7003         p->level--;
7004         return NULL;
7005     }
7006     int _start_lineno = p->tokens[_mark]->lineno;
7007     UNUSED(_start_lineno); // Only used by EXTRA macro
7008     int _start_col_offset = p->tokens[_mark]->col_offset;
7009     UNUSED(_start_col_offset); // Only used by EXTRA macro
7010     { // "_"
7011         if (p->error_indicator) {
7012             p->level--;
7013             return NULL;
7014         }
7015         D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
7016         expr_ty _keyword;
7017         if (
7018             (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
7019         )
7020         {
7021             D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
7022             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7023             if (_token == NULL) {
7024                 p->level--;
7025                 return NULL;
7026             }
7027             int _end_lineno = _token->end_lineno;
7028             UNUSED(_end_lineno); // Only used by EXTRA macro
7029             int _end_col_offset = _token->end_col_offset;
7030             UNUSED(_end_col_offset); // Only used by EXTRA macro
7031             _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
7032             if (_res == NULL && PyErr_Occurred()) {
7033                 p->error_indicator = 1;
7034                 p->level--;
7035                 return NULL;
7036             }
7037             goto done;
7038         }
7039         p->mark = _mark;
7040         D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7041                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
7042     }
7043     _res = NULL;
7044   done:
7045     p->level--;
7046     return _res;
7047 }
7048 
7049 // value_pattern: attr !('.' | '(' | '=')
7050 static pattern_ty
value_pattern_rule(Parser * p)7051 value_pattern_rule(Parser *p)
7052 {
7053     if (p->level++ == MAXSTACK) {
7054         p->error_indicator = 1;
7055         PyErr_NoMemory();
7056     }
7057     if (p->error_indicator) {
7058         p->level--;
7059         return NULL;
7060     }
7061     pattern_ty _res = NULL;
7062     int _mark = p->mark;
7063     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7064         p->error_indicator = 1;
7065         p->level--;
7066         return NULL;
7067     }
7068     int _start_lineno = p->tokens[_mark]->lineno;
7069     UNUSED(_start_lineno); // Only used by EXTRA macro
7070     int _start_col_offset = p->tokens[_mark]->col_offset;
7071     UNUSED(_start_col_offset); // Only used by EXTRA macro
7072     { // attr !('.' | '(' | '=')
7073         if (p->error_indicator) {
7074             p->level--;
7075             return NULL;
7076         }
7077         D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
7078         expr_ty attr;
7079         if (
7080             (attr = attr_rule(p))  // attr
7081             &&
7082             _PyPegen_lookahead(0, _tmp_56_rule, p)
7083         )
7084         {
7085             D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
7086             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7087             if (_token == NULL) {
7088                 p->level--;
7089                 return NULL;
7090             }
7091             int _end_lineno = _token->end_lineno;
7092             UNUSED(_end_lineno); // Only used by EXTRA macro
7093             int _end_col_offset = _token->end_col_offset;
7094             UNUSED(_end_col_offset); // Only used by EXTRA macro
7095             _res = _PyAST_MatchValue ( attr , EXTRA );
7096             if (_res == NULL && PyErr_Occurred()) {
7097                 p->error_indicator = 1;
7098                 p->level--;
7099                 return NULL;
7100             }
7101             goto done;
7102         }
7103         p->mark = _mark;
7104         D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7105                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
7106     }
7107     _res = NULL;
7108   done:
7109     p->level--;
7110     return _res;
7111 }
7112 
7113 // Left-recursive
7114 // attr: name_or_attr '.' NAME
7115 static expr_ty attr_raw(Parser *);
7116 static expr_ty
attr_rule(Parser * p)7117 attr_rule(Parser *p)
7118 {
7119     if (p->level++ == MAXSTACK) {
7120         p->error_indicator = 1;
7121         PyErr_NoMemory();
7122     }
7123     expr_ty _res = NULL;
7124     if (_PyPegen_is_memoized(p, attr_type, &_res)) {
7125         p->level--;
7126         return _res;
7127     }
7128     int _mark = p->mark;
7129     int _resmark = p->mark;
7130     while (1) {
7131         int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
7132         if (tmpvar_1) {
7133             p->level--;
7134             return _res;
7135         }
7136         p->mark = _mark;
7137         p->in_raw_rule++;
7138         void *_raw = attr_raw(p);
7139         p->in_raw_rule--;
7140         if (p->error_indicator) {
7141             p->level--;
7142             return NULL;
7143         }
7144         if (_raw == NULL || p->mark <= _resmark)
7145             break;
7146         _resmark = p->mark;
7147         _res = _raw;
7148     }
7149     p->mark = _resmark;
7150     p->level--;
7151     return _res;
7152 }
7153 static expr_ty
attr_raw(Parser * p)7154 attr_raw(Parser *p)
7155 {
7156     if (p->level++ == MAXSTACK) {
7157         p->error_indicator = 1;
7158         PyErr_NoMemory();
7159     }
7160     if (p->error_indicator) {
7161         p->level--;
7162         return NULL;
7163     }
7164     expr_ty _res = NULL;
7165     int _mark = p->mark;
7166     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7167         p->error_indicator = 1;
7168         p->level--;
7169         return NULL;
7170     }
7171     int _start_lineno = p->tokens[_mark]->lineno;
7172     UNUSED(_start_lineno); // Only used by EXTRA macro
7173     int _start_col_offset = p->tokens[_mark]->col_offset;
7174     UNUSED(_start_col_offset); // Only used by EXTRA macro
7175     { // name_or_attr '.' NAME
7176         if (p->error_indicator) {
7177             p->level--;
7178             return NULL;
7179         }
7180         D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
7181         Token * _literal;
7182         expr_ty attr;
7183         expr_ty value;
7184         if (
7185             (value = name_or_attr_rule(p))  // name_or_attr
7186             &&
7187             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
7188             &&
7189             (attr = _PyPegen_name_token(p))  // NAME
7190         )
7191         {
7192             D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
7193             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7194             if (_token == NULL) {
7195                 p->level--;
7196                 return NULL;
7197             }
7198             int _end_lineno = _token->end_lineno;
7199             UNUSED(_end_lineno); // Only used by EXTRA macro
7200             int _end_col_offset = _token->end_col_offset;
7201             UNUSED(_end_col_offset); // Only used by EXTRA macro
7202             _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
7203             if (_res == NULL && PyErr_Occurred()) {
7204                 p->error_indicator = 1;
7205                 p->level--;
7206                 return NULL;
7207             }
7208             goto done;
7209         }
7210         p->mark = _mark;
7211         D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
7212                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
7213     }
7214     _res = NULL;
7215   done:
7216     p->level--;
7217     return _res;
7218 }
7219 
7220 // Left-recursive
7221 // name_or_attr: attr | NAME
7222 static expr_ty
name_or_attr_rule(Parser * p)7223 name_or_attr_rule(Parser *p)
7224 {
7225     if (p->level++ == MAXSTACK) {
7226         p->error_indicator = 1;
7227         PyErr_NoMemory();
7228     }
7229     if (p->error_indicator) {
7230         p->level--;
7231         return NULL;
7232     }
7233     expr_ty _res = NULL;
7234     int _mark = p->mark;
7235     { // attr
7236         if (p->error_indicator) {
7237             p->level--;
7238             return NULL;
7239         }
7240         D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
7241         expr_ty attr_var;
7242         if (
7243             (attr_var = attr_rule(p))  // attr
7244         )
7245         {
7246             D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
7247             _res = attr_var;
7248             goto done;
7249         }
7250         p->mark = _mark;
7251         D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
7252                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
7253     }
7254     { // NAME
7255         if (p->error_indicator) {
7256             p->level--;
7257             return NULL;
7258         }
7259         D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
7260         expr_ty name_var;
7261         if (
7262             (name_var = _PyPegen_name_token(p))  // NAME
7263         )
7264         {
7265             D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
7266             _res = name_var;
7267             goto done;
7268         }
7269         p->mark = _mark;
7270         D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
7271                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
7272     }
7273     _res = NULL;
7274   done:
7275     p->level--;
7276     return _res;
7277 }
7278 
7279 // group_pattern: '(' pattern ')'
7280 static pattern_ty
group_pattern_rule(Parser * p)7281 group_pattern_rule(Parser *p)
7282 {
7283     if (p->level++ == MAXSTACK) {
7284         p->error_indicator = 1;
7285         PyErr_NoMemory();
7286     }
7287     if (p->error_indicator) {
7288         p->level--;
7289         return NULL;
7290     }
7291     pattern_ty _res = NULL;
7292     int _mark = p->mark;
7293     { // '(' pattern ')'
7294         if (p->error_indicator) {
7295             p->level--;
7296             return NULL;
7297         }
7298         D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
7299         Token * _literal;
7300         Token * _literal_1;
7301         pattern_ty pattern;
7302         if (
7303             (_literal = _PyPegen_expect_token(p, 7))  // token='('
7304             &&
7305             (pattern = pattern_rule(p))  // pattern
7306             &&
7307             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
7308         )
7309         {
7310             D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
7311             _res = pattern;
7312             if (_res == NULL && PyErr_Occurred()) {
7313                 p->error_indicator = 1;
7314                 p->level--;
7315                 return NULL;
7316             }
7317             goto done;
7318         }
7319         p->mark = _mark;
7320         D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7321                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
7322     }
7323     _res = NULL;
7324   done:
7325     p->level--;
7326     return _res;
7327 }
7328 
7329 // sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
7330 static pattern_ty
sequence_pattern_rule(Parser * p)7331 sequence_pattern_rule(Parser *p)
7332 {
7333     if (p->level++ == MAXSTACK) {
7334         p->error_indicator = 1;
7335         PyErr_NoMemory();
7336     }
7337     if (p->error_indicator) {
7338         p->level--;
7339         return NULL;
7340     }
7341     pattern_ty _res = NULL;
7342     int _mark = p->mark;
7343     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7344         p->error_indicator = 1;
7345         p->level--;
7346         return NULL;
7347     }
7348     int _start_lineno = p->tokens[_mark]->lineno;
7349     UNUSED(_start_lineno); // Only used by EXTRA macro
7350     int _start_col_offset = p->tokens[_mark]->col_offset;
7351     UNUSED(_start_col_offset); // Only used by EXTRA macro
7352     { // '[' maybe_sequence_pattern? ']'
7353         if (p->error_indicator) {
7354             p->level--;
7355             return NULL;
7356         }
7357         D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
7358         Token * _literal;
7359         Token * _literal_1;
7360         void *patterns;
7361         if (
7362             (_literal = _PyPegen_expect_token(p, 9))  // token='['
7363             &&
7364             (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
7365             &&
7366             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
7367         )
7368         {
7369             D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
7370             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7371             if (_token == NULL) {
7372                 p->level--;
7373                 return NULL;
7374             }
7375             int _end_lineno = _token->end_lineno;
7376             UNUSED(_end_lineno); // Only used by EXTRA macro
7377             int _end_col_offset = _token->end_col_offset;
7378             UNUSED(_end_col_offset); // Only used by EXTRA macro
7379             _res = _PyAST_MatchSequence ( patterns , EXTRA );
7380             if (_res == NULL && PyErr_Occurred()) {
7381                 p->error_indicator = 1;
7382                 p->level--;
7383                 return NULL;
7384             }
7385             goto done;
7386         }
7387         p->mark = _mark;
7388         D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7389                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
7390     }
7391     { // '(' open_sequence_pattern? ')'
7392         if (p->error_indicator) {
7393             p->level--;
7394             return NULL;
7395         }
7396         D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
7397         Token * _literal;
7398         Token * _literal_1;
7399         void *patterns;
7400         if (
7401             (_literal = _PyPegen_expect_token(p, 7))  // token='('
7402             &&
7403             (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
7404             &&
7405             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
7406         )
7407         {
7408             D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
7409             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7410             if (_token == NULL) {
7411                 p->level--;
7412                 return NULL;
7413             }
7414             int _end_lineno = _token->end_lineno;
7415             UNUSED(_end_lineno); // Only used by EXTRA macro
7416             int _end_col_offset = _token->end_col_offset;
7417             UNUSED(_end_col_offset); // Only used by EXTRA macro
7418             _res = _PyAST_MatchSequence ( patterns , EXTRA );
7419             if (_res == NULL && PyErr_Occurred()) {
7420                 p->error_indicator = 1;
7421                 p->level--;
7422                 return NULL;
7423             }
7424             goto done;
7425         }
7426         p->mark = _mark;
7427         D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7428                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
7429     }
7430     _res = NULL;
7431   done:
7432     p->level--;
7433     return _res;
7434 }
7435 
7436 // open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
7437 static asdl_seq*
open_sequence_pattern_rule(Parser * p)7438 open_sequence_pattern_rule(Parser *p)
7439 {
7440     if (p->level++ == MAXSTACK) {
7441         p->error_indicator = 1;
7442         PyErr_NoMemory();
7443     }
7444     if (p->error_indicator) {
7445         p->level--;
7446         return NULL;
7447     }
7448     asdl_seq* _res = NULL;
7449     int _mark = p->mark;
7450     { // maybe_star_pattern ',' maybe_sequence_pattern?
7451         if (p->error_indicator) {
7452             p->level--;
7453             return NULL;
7454         }
7455         D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
7456         Token * _literal;
7457         pattern_ty pattern;
7458         void *patterns;
7459         if (
7460             (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
7461             &&
7462             (_literal = _PyPegen_expect_token(p, 12))  // token=','
7463             &&
7464             (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
7465         )
7466         {
7467             D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
7468             _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
7469             if (_res == NULL && PyErr_Occurred()) {
7470                 p->error_indicator = 1;
7471                 p->level--;
7472                 return NULL;
7473             }
7474             goto done;
7475         }
7476         p->mark = _mark;
7477         D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7478                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
7479     }
7480     _res = NULL;
7481   done:
7482     p->level--;
7483     return _res;
7484 }
7485 
7486 // maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
7487 static asdl_seq*
maybe_sequence_pattern_rule(Parser * p)7488 maybe_sequence_pattern_rule(Parser *p)
7489 {
7490     if (p->level++ == MAXSTACK) {
7491         p->error_indicator = 1;
7492         PyErr_NoMemory();
7493     }
7494     if (p->error_indicator) {
7495         p->level--;
7496         return NULL;
7497     }
7498     asdl_seq* _res = NULL;
7499     int _mark = p->mark;
7500     { // ','.maybe_star_pattern+ ','?
7501         if (p->error_indicator) {
7502             p->level--;
7503             return NULL;
7504         }
7505         D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
7506         void *_opt_var;
7507         UNUSED(_opt_var); // Silence compiler warnings
7508         asdl_seq * patterns;
7509         if (
7510             (patterns = _gather_57_rule(p))  // ','.maybe_star_pattern+
7511             &&
7512             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7513         )
7514         {
7515             D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
7516             _res = patterns;
7517             if (_res == NULL && PyErr_Occurred()) {
7518                 p->error_indicator = 1;
7519                 p->level--;
7520                 return NULL;
7521             }
7522             goto done;
7523         }
7524         p->mark = _mark;
7525         D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7526                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
7527     }
7528     _res = NULL;
7529   done:
7530     p->level--;
7531     return _res;
7532 }
7533 
7534 // maybe_star_pattern: star_pattern | pattern
7535 static pattern_ty
maybe_star_pattern_rule(Parser * p)7536 maybe_star_pattern_rule(Parser *p)
7537 {
7538     if (p->level++ == MAXSTACK) {
7539         p->error_indicator = 1;
7540         PyErr_NoMemory();
7541     }
7542     if (p->error_indicator) {
7543         p->level--;
7544         return NULL;
7545     }
7546     pattern_ty _res = NULL;
7547     int _mark = p->mark;
7548     { // star_pattern
7549         if (p->error_indicator) {
7550             p->level--;
7551             return NULL;
7552         }
7553         D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
7554         pattern_ty star_pattern_var;
7555         if (
7556             (star_pattern_var = star_pattern_rule(p))  // star_pattern
7557         )
7558         {
7559             D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
7560             _res = star_pattern_var;
7561             goto done;
7562         }
7563         p->mark = _mark;
7564         D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7565                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
7566     }
7567     { // pattern
7568         if (p->error_indicator) {
7569             p->level--;
7570             return NULL;
7571         }
7572         D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
7573         pattern_ty pattern_var;
7574         if (
7575             (pattern_var = pattern_rule(p))  // pattern
7576         )
7577         {
7578             D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
7579             _res = pattern_var;
7580             goto done;
7581         }
7582         p->mark = _mark;
7583         D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7584                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
7585     }
7586     _res = NULL;
7587   done:
7588     p->level--;
7589     return _res;
7590 }
7591 
7592 // star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
7593 static pattern_ty
star_pattern_rule(Parser * p)7594 star_pattern_rule(Parser *p)
7595 {
7596     if (p->level++ == MAXSTACK) {
7597         p->error_indicator = 1;
7598         PyErr_NoMemory();
7599     }
7600     if (p->error_indicator) {
7601         p->level--;
7602         return NULL;
7603     }
7604     pattern_ty _res = NULL;
7605     int _mark = p->mark;
7606     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7607         p->error_indicator = 1;
7608         p->level--;
7609         return NULL;
7610     }
7611     int _start_lineno = p->tokens[_mark]->lineno;
7612     UNUSED(_start_lineno); // Only used by EXTRA macro
7613     int _start_col_offset = p->tokens[_mark]->col_offset;
7614     UNUSED(_start_col_offset); // Only used by EXTRA macro
7615     { // '*' pattern_capture_target
7616         if (p->error_indicator) {
7617             p->level--;
7618             return NULL;
7619         }
7620         D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
7621         Token * _literal;
7622         expr_ty target;
7623         if (
7624             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7625             &&
7626             (target = pattern_capture_target_rule(p))  // pattern_capture_target
7627         )
7628         {
7629             D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
7630             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7631             if (_token == NULL) {
7632                 p->level--;
7633                 return NULL;
7634             }
7635             int _end_lineno = _token->end_lineno;
7636             UNUSED(_end_lineno); // Only used by EXTRA macro
7637             int _end_col_offset = _token->end_col_offset;
7638             UNUSED(_end_col_offset); // Only used by EXTRA macro
7639             _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
7640             if (_res == NULL && PyErr_Occurred()) {
7641                 p->error_indicator = 1;
7642                 p->level--;
7643                 return NULL;
7644             }
7645             goto done;
7646         }
7647         p->mark = _mark;
7648         D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7649                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
7650     }
7651     { // '*' wildcard_pattern
7652         if (p->error_indicator) {
7653             p->level--;
7654             return NULL;
7655         }
7656         D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
7657         Token * _literal;
7658         pattern_ty wildcard_pattern_var;
7659         if (
7660             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7661             &&
7662             (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
7663         )
7664         {
7665             D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
7666             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7667             if (_token == NULL) {
7668                 p->level--;
7669                 return NULL;
7670             }
7671             int _end_lineno = _token->end_lineno;
7672             UNUSED(_end_lineno); // Only used by EXTRA macro
7673             int _end_col_offset = _token->end_col_offset;
7674             UNUSED(_end_col_offset); // Only used by EXTRA macro
7675             _res = _PyAST_MatchStar ( NULL , EXTRA );
7676             if (_res == NULL && PyErr_Occurred()) {
7677                 p->error_indicator = 1;
7678                 p->level--;
7679                 return NULL;
7680             }
7681             goto done;
7682         }
7683         p->mark = _mark;
7684         D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7685                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
7686     }
7687     _res = NULL;
7688   done:
7689     p->level--;
7690     return _res;
7691 }
7692 
7693 // mapping_pattern:
7694 //     | '{' '}'
7695 //     | '{' double_star_pattern ','? '}'
7696 //     | '{' items_pattern ',' double_star_pattern ','? '}'
7697 //     | '{' items_pattern ','? '}'
7698 static pattern_ty
mapping_pattern_rule(Parser * p)7699 mapping_pattern_rule(Parser *p)
7700 {
7701     if (p->level++ == MAXSTACK) {
7702         p->error_indicator = 1;
7703         PyErr_NoMemory();
7704     }
7705     if (p->error_indicator) {
7706         p->level--;
7707         return NULL;
7708     }
7709     pattern_ty _res = NULL;
7710     int _mark = p->mark;
7711     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7712         p->error_indicator = 1;
7713         p->level--;
7714         return NULL;
7715     }
7716     int _start_lineno = p->tokens[_mark]->lineno;
7717     UNUSED(_start_lineno); // Only used by EXTRA macro
7718     int _start_col_offset = p->tokens[_mark]->col_offset;
7719     UNUSED(_start_col_offset); // Only used by EXTRA macro
7720     { // '{' '}'
7721         if (p->error_indicator) {
7722             p->level--;
7723             return NULL;
7724         }
7725         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
7726         Token * _literal;
7727         Token * _literal_1;
7728         if (
7729             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
7730             &&
7731             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
7732         )
7733         {
7734             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
7735             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7736             if (_token == NULL) {
7737                 p->level--;
7738                 return NULL;
7739             }
7740             int _end_lineno = _token->end_lineno;
7741             UNUSED(_end_lineno); // Only used by EXTRA macro
7742             int _end_col_offset = _token->end_col_offset;
7743             UNUSED(_end_col_offset); // Only used by EXTRA macro
7744             _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
7745             if (_res == NULL && PyErr_Occurred()) {
7746                 p->error_indicator = 1;
7747                 p->level--;
7748                 return NULL;
7749             }
7750             goto done;
7751         }
7752         p->mark = _mark;
7753         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7754                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
7755     }
7756     { // '{' double_star_pattern ','? '}'
7757         if (p->error_indicator) {
7758             p->level--;
7759             return NULL;
7760         }
7761         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
7762         Token * _literal;
7763         Token * _literal_1;
7764         void *_opt_var;
7765         UNUSED(_opt_var); // Silence compiler warnings
7766         expr_ty rest;
7767         if (
7768             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
7769             &&
7770             (rest = double_star_pattern_rule(p))  // double_star_pattern
7771             &&
7772             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7773             &&
7774             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
7775         )
7776         {
7777             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
7778             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7779             if (_token == NULL) {
7780                 p->level--;
7781                 return NULL;
7782             }
7783             int _end_lineno = _token->end_lineno;
7784             UNUSED(_end_lineno); // Only used by EXTRA macro
7785             int _end_col_offset = _token->end_col_offset;
7786             UNUSED(_end_col_offset); // Only used by EXTRA macro
7787             _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
7788             if (_res == NULL && PyErr_Occurred()) {
7789                 p->error_indicator = 1;
7790                 p->level--;
7791                 return NULL;
7792             }
7793             goto done;
7794         }
7795         p->mark = _mark;
7796         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7797                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
7798     }
7799     { // '{' items_pattern ',' double_star_pattern ','? '}'
7800         if (p->error_indicator) {
7801             p->level--;
7802             return NULL;
7803         }
7804         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
7805         Token * _literal;
7806         Token * _literal_1;
7807         Token * _literal_2;
7808         void *_opt_var;
7809         UNUSED(_opt_var); // Silence compiler warnings
7810         asdl_seq* items;
7811         expr_ty rest;
7812         if (
7813             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
7814             &&
7815             (items = items_pattern_rule(p))  // items_pattern
7816             &&
7817             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
7818             &&
7819             (rest = double_star_pattern_rule(p))  // double_star_pattern
7820             &&
7821             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7822             &&
7823             (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
7824         )
7825         {
7826             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
7827             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7828             if (_token == NULL) {
7829                 p->level--;
7830                 return NULL;
7831             }
7832             int _end_lineno = _token->end_lineno;
7833             UNUSED(_end_lineno); // Only used by EXTRA macro
7834             int _end_col_offset = _token->end_col_offset;
7835             UNUSED(_end_col_offset); // Only used by EXTRA macro
7836             _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 );
7837             if (_res == NULL && PyErr_Occurred()) {
7838                 p->error_indicator = 1;
7839                 p->level--;
7840                 return NULL;
7841             }
7842             goto done;
7843         }
7844         p->mark = _mark;
7845         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7846                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
7847     }
7848     { // '{' items_pattern ','? '}'
7849         if (p->error_indicator) {
7850             p->level--;
7851             return NULL;
7852         }
7853         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
7854         Token * _literal;
7855         Token * _literal_1;
7856         void *_opt_var;
7857         UNUSED(_opt_var); // Silence compiler warnings
7858         asdl_seq* items;
7859         if (
7860             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
7861             &&
7862             (items = items_pattern_rule(p))  // items_pattern
7863             &&
7864             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7865             &&
7866             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
7867         )
7868         {
7869             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
7870             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7871             if (_token == NULL) {
7872                 p->level--;
7873                 return NULL;
7874             }
7875             int _end_lineno = _token->end_lineno;
7876             UNUSED(_end_lineno); // Only used by EXTRA macro
7877             int _end_col_offset = _token->end_col_offset;
7878             UNUSED(_end_col_offset); // Only used by EXTRA macro
7879             _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq * , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq * , _PyPegen_get_patterns ( p , items ) ) , NULL , EXTRA );
7880             if (_res == NULL && PyErr_Occurred()) {
7881                 p->error_indicator = 1;
7882                 p->level--;
7883                 return NULL;
7884             }
7885             goto done;
7886         }
7887         p->mark = _mark;
7888         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7889                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
7890     }
7891     _res = NULL;
7892   done:
7893     p->level--;
7894     return _res;
7895 }
7896 
7897 // items_pattern: ','.key_value_pattern+
7898 static asdl_seq*
items_pattern_rule(Parser * p)7899 items_pattern_rule(Parser *p)
7900 {
7901     if (p->level++ == MAXSTACK) {
7902         p->error_indicator = 1;
7903         PyErr_NoMemory();
7904     }
7905     if (p->error_indicator) {
7906         p->level--;
7907         return NULL;
7908     }
7909     asdl_seq* _res = NULL;
7910     int _mark = p->mark;
7911     { // ','.key_value_pattern+
7912         if (p->error_indicator) {
7913             p->level--;
7914             return NULL;
7915         }
7916         D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
7917         asdl_seq * _gather_59_var;
7918         if (
7919             (_gather_59_var = _gather_59_rule(p))  // ','.key_value_pattern+
7920         )
7921         {
7922             D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
7923             _res = _gather_59_var;
7924             goto done;
7925         }
7926         p->mark = _mark;
7927         D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7928                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
7929     }
7930     _res = NULL;
7931   done:
7932     p->level--;
7933     return _res;
7934 }
7935 
7936 // key_value_pattern: (literal_expr | attr) ':' pattern
7937 static KeyPatternPair*
key_value_pattern_rule(Parser * p)7938 key_value_pattern_rule(Parser *p)
7939 {
7940     if (p->level++ == MAXSTACK) {
7941         p->error_indicator = 1;
7942         PyErr_NoMemory();
7943     }
7944     if (p->error_indicator) {
7945         p->level--;
7946         return NULL;
7947     }
7948     KeyPatternPair* _res = NULL;
7949     int _mark = p->mark;
7950     { // (literal_expr | attr) ':' pattern
7951         if (p->error_indicator) {
7952             p->level--;
7953             return NULL;
7954         }
7955         D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
7956         Token * _literal;
7957         void *key;
7958         pattern_ty pattern;
7959         if (
7960             (key = _tmp_61_rule(p))  // literal_expr | attr
7961             &&
7962             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7963             &&
7964             (pattern = pattern_rule(p))  // pattern
7965         )
7966         {
7967             D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
7968             _res = _PyPegen_key_pattern_pair ( p , key , pattern );
7969             if (_res == NULL && PyErr_Occurred()) {
7970                 p->error_indicator = 1;
7971                 p->level--;
7972                 return NULL;
7973             }
7974             goto done;
7975         }
7976         p->mark = _mark;
7977         D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7978                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
7979     }
7980     _res = NULL;
7981   done:
7982     p->level--;
7983     return _res;
7984 }
7985 
7986 // double_star_pattern: '**' pattern_capture_target
7987 static expr_ty
double_star_pattern_rule(Parser * p)7988 double_star_pattern_rule(Parser *p)
7989 {
7990     if (p->level++ == MAXSTACK) {
7991         p->error_indicator = 1;
7992         PyErr_NoMemory();
7993     }
7994     if (p->error_indicator) {
7995         p->level--;
7996         return NULL;
7997     }
7998     expr_ty _res = NULL;
7999     int _mark = p->mark;
8000     { // '**' pattern_capture_target
8001         if (p->error_indicator) {
8002             p->level--;
8003             return NULL;
8004         }
8005         D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
8006         Token * _literal;
8007         expr_ty target;
8008         if (
8009             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
8010             &&
8011             (target = pattern_capture_target_rule(p))  // pattern_capture_target
8012         )
8013         {
8014             D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
8015             _res = target;
8016             if (_res == NULL && PyErr_Occurred()) {
8017                 p->error_indicator = 1;
8018                 p->level--;
8019                 return NULL;
8020             }
8021             goto done;
8022         }
8023         p->mark = _mark;
8024         D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8025                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
8026     }
8027     _res = NULL;
8028   done:
8029     p->level--;
8030     return _res;
8031 }
8032 
8033 // class_pattern:
8034 //     | name_or_attr '(' ')'
8035 //     | name_or_attr '(' positional_patterns ','? ')'
8036 //     | name_or_attr '(' keyword_patterns ','? ')'
8037 //     | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
8038 //     | invalid_class_pattern
8039 static pattern_ty
class_pattern_rule(Parser * p)8040 class_pattern_rule(Parser *p)
8041 {
8042     if (p->level++ == MAXSTACK) {
8043         p->error_indicator = 1;
8044         PyErr_NoMemory();
8045     }
8046     if (p->error_indicator) {
8047         p->level--;
8048         return NULL;
8049     }
8050     pattern_ty _res = NULL;
8051     int _mark = p->mark;
8052     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8053         p->error_indicator = 1;
8054         p->level--;
8055         return NULL;
8056     }
8057     int _start_lineno = p->tokens[_mark]->lineno;
8058     UNUSED(_start_lineno); // Only used by EXTRA macro
8059     int _start_col_offset = p->tokens[_mark]->col_offset;
8060     UNUSED(_start_col_offset); // Only used by EXTRA macro
8061     { // name_or_attr '(' ')'
8062         if (p->error_indicator) {
8063             p->level--;
8064             return NULL;
8065         }
8066         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
8067         Token * _literal;
8068         Token * _literal_1;
8069         expr_ty cls;
8070         if (
8071             (cls = name_or_attr_rule(p))  // name_or_attr
8072             &&
8073             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8074             &&
8075             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8076         )
8077         {
8078             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
8079             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8080             if (_token == NULL) {
8081                 p->level--;
8082                 return NULL;
8083             }
8084             int _end_lineno = _token->end_lineno;
8085             UNUSED(_end_lineno); // Only used by EXTRA macro
8086             int _end_col_offset = _token->end_col_offset;
8087             UNUSED(_end_col_offset); // Only used by EXTRA macro
8088             _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
8089             if (_res == NULL && PyErr_Occurred()) {
8090                 p->error_indicator = 1;
8091                 p->level--;
8092                 return NULL;
8093             }
8094             goto done;
8095         }
8096         p->mark = _mark;
8097         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8098                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
8099     }
8100     { // name_or_attr '(' positional_patterns ','? ')'
8101         if (p->error_indicator) {
8102             p->level--;
8103             return NULL;
8104         }
8105         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
8106         Token * _literal;
8107         Token * _literal_1;
8108         void *_opt_var;
8109         UNUSED(_opt_var); // Silence compiler warnings
8110         expr_ty cls;
8111         asdl_pattern_seq* patterns;
8112         if (
8113             (cls = name_or_attr_rule(p))  // name_or_attr
8114             &&
8115             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8116             &&
8117             (patterns = positional_patterns_rule(p))  // positional_patterns
8118             &&
8119             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
8120             &&
8121             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8122         )
8123         {
8124             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
8125             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8126             if (_token == NULL) {
8127                 p->level--;
8128                 return NULL;
8129             }
8130             int _end_lineno = _token->end_lineno;
8131             UNUSED(_end_lineno); // Only used by EXTRA macro
8132             int _end_col_offset = _token->end_col_offset;
8133             UNUSED(_end_col_offset); // Only used by EXTRA macro
8134             _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
8135             if (_res == NULL && PyErr_Occurred()) {
8136                 p->error_indicator = 1;
8137                 p->level--;
8138                 return NULL;
8139             }
8140             goto done;
8141         }
8142         p->mark = _mark;
8143         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8144                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
8145     }
8146     { // name_or_attr '(' keyword_patterns ','? ')'
8147         if (p->error_indicator) {
8148             p->level--;
8149             return NULL;
8150         }
8151         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
8152         Token * _literal;
8153         Token * _literal_1;
8154         void *_opt_var;
8155         UNUSED(_opt_var); // Silence compiler warnings
8156         expr_ty cls;
8157         asdl_seq* keywords;
8158         if (
8159             (cls = name_or_attr_rule(p))  // name_or_attr
8160             &&
8161             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8162             &&
8163             (keywords = keyword_patterns_rule(p))  // keyword_patterns
8164             &&
8165             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
8166             &&
8167             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8168         )
8169         {
8170             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
8171             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8172             if (_token == NULL) {
8173                 p->level--;
8174                 return NULL;
8175             }
8176             int _end_lineno = _token->end_lineno;
8177             UNUSED(_end_lineno); // Only used by EXTRA macro
8178             int _end_col_offset = _token->end_col_offset;
8179             UNUSED(_end_col_offset); // Only used by EXTRA macro
8180             _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 );
8181             if (_res == NULL && PyErr_Occurred()) {
8182                 p->error_indicator = 1;
8183                 p->level--;
8184                 return NULL;
8185             }
8186             goto done;
8187         }
8188         p->mark = _mark;
8189         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8190                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
8191     }
8192     { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
8193         if (p->error_indicator) {
8194             p->level--;
8195             return NULL;
8196         }
8197         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
8198         Token * _literal;
8199         Token * _literal_1;
8200         Token * _literal_2;
8201         void *_opt_var;
8202         UNUSED(_opt_var); // Silence compiler warnings
8203         expr_ty cls;
8204         asdl_seq* keywords;
8205         asdl_pattern_seq* patterns;
8206         if (
8207             (cls = name_or_attr_rule(p))  // name_or_attr
8208             &&
8209             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8210             &&
8211             (patterns = positional_patterns_rule(p))  // positional_patterns
8212             &&
8213             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
8214             &&
8215             (keywords = keyword_patterns_rule(p))  // keyword_patterns
8216             &&
8217             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
8218             &&
8219             (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
8220         )
8221         {
8222             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
8223             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8224             if (_token == NULL) {
8225                 p->level--;
8226                 return NULL;
8227             }
8228             int _end_lineno = _token->end_lineno;
8229             UNUSED(_end_lineno); // Only used by EXTRA macro
8230             int _end_col_offset = _token->end_col_offset;
8231             UNUSED(_end_col_offset); // Only used by EXTRA macro
8232             _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 );
8233             if (_res == NULL && PyErr_Occurred()) {
8234                 p->error_indicator = 1;
8235                 p->level--;
8236                 return NULL;
8237             }
8238             goto done;
8239         }
8240         p->mark = _mark;
8241         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8242                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
8243     }
8244     if (p->call_invalid_rules) { // invalid_class_pattern
8245         if (p->error_indicator) {
8246             p->level--;
8247             return NULL;
8248         }
8249         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
8250         void *invalid_class_pattern_var;
8251         if (
8252             (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
8253         )
8254         {
8255             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
8256             _res = invalid_class_pattern_var;
8257             goto done;
8258         }
8259         p->mark = _mark;
8260         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8261                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
8262     }
8263     _res = NULL;
8264   done:
8265     p->level--;
8266     return _res;
8267 }
8268 
8269 // positional_patterns: ','.pattern+
8270 static asdl_pattern_seq*
positional_patterns_rule(Parser * p)8271 positional_patterns_rule(Parser *p)
8272 {
8273     if (p->level++ == MAXSTACK) {
8274         p->error_indicator = 1;
8275         PyErr_NoMemory();
8276     }
8277     if (p->error_indicator) {
8278         p->level--;
8279         return NULL;
8280     }
8281     asdl_pattern_seq* _res = NULL;
8282     int _mark = p->mark;
8283     { // ','.pattern+
8284         if (p->error_indicator) {
8285             p->level--;
8286             return NULL;
8287         }
8288         D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
8289         asdl_pattern_seq* args;
8290         if (
8291             (args = (asdl_pattern_seq*)_gather_62_rule(p))  // ','.pattern+
8292         )
8293         {
8294             D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
8295             _res = args;
8296             if (_res == NULL && PyErr_Occurred()) {
8297                 p->error_indicator = 1;
8298                 p->level--;
8299                 return NULL;
8300             }
8301             goto done;
8302         }
8303         p->mark = _mark;
8304         D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
8305                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
8306     }
8307     _res = NULL;
8308   done:
8309     p->level--;
8310     return _res;
8311 }
8312 
8313 // keyword_patterns: ','.keyword_pattern+
8314 static asdl_seq*
keyword_patterns_rule(Parser * p)8315 keyword_patterns_rule(Parser *p)
8316 {
8317     if (p->level++ == MAXSTACK) {
8318         p->error_indicator = 1;
8319         PyErr_NoMemory();
8320     }
8321     if (p->error_indicator) {
8322         p->level--;
8323         return NULL;
8324     }
8325     asdl_seq* _res = NULL;
8326     int _mark = p->mark;
8327     { // ','.keyword_pattern+
8328         if (p->error_indicator) {
8329             p->level--;
8330             return NULL;
8331         }
8332         D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
8333         asdl_seq * _gather_64_var;
8334         if (
8335             (_gather_64_var = _gather_64_rule(p))  // ','.keyword_pattern+
8336         )
8337         {
8338             D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
8339             _res = _gather_64_var;
8340             goto done;
8341         }
8342         p->mark = _mark;
8343         D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
8344                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
8345     }
8346     _res = NULL;
8347   done:
8348     p->level--;
8349     return _res;
8350 }
8351 
8352 // keyword_pattern: NAME '=' pattern
8353 static KeyPatternPair*
keyword_pattern_rule(Parser * p)8354 keyword_pattern_rule(Parser *p)
8355 {
8356     if (p->level++ == MAXSTACK) {
8357         p->error_indicator = 1;
8358         PyErr_NoMemory();
8359     }
8360     if (p->error_indicator) {
8361         p->level--;
8362         return NULL;
8363     }
8364     KeyPatternPair* _res = NULL;
8365     int _mark = p->mark;
8366     { // NAME '=' pattern
8367         if (p->error_indicator) {
8368             p->level--;
8369             return NULL;
8370         }
8371         D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
8372         Token * _literal;
8373         expr_ty arg;
8374         pattern_ty value;
8375         if (
8376             (arg = _PyPegen_name_token(p))  // NAME
8377             &&
8378             (_literal = _PyPegen_expect_token(p, 22))  // token='='
8379             &&
8380             (value = pattern_rule(p))  // pattern
8381         )
8382         {
8383             D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
8384             _res = _PyPegen_key_pattern_pair ( p , arg , value );
8385             if (_res == NULL && PyErr_Occurred()) {
8386                 p->error_indicator = 1;
8387                 p->level--;
8388                 return NULL;
8389             }
8390             goto done;
8391         }
8392         p->mark = _mark;
8393         D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8394                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
8395     }
8396     _res = NULL;
8397   done:
8398     p->level--;
8399     return _res;
8400 }
8401 
8402 // return_stmt: 'return' star_expressions?
8403 static stmt_ty
return_stmt_rule(Parser * p)8404 return_stmt_rule(Parser *p)
8405 {
8406     if (p->level++ == MAXSTACK) {
8407         p->error_indicator = 1;
8408         PyErr_NoMemory();
8409     }
8410     if (p->error_indicator) {
8411         p->level--;
8412         return NULL;
8413     }
8414     stmt_ty _res = NULL;
8415     int _mark = p->mark;
8416     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8417         p->error_indicator = 1;
8418         p->level--;
8419         return NULL;
8420     }
8421     int _start_lineno = p->tokens[_mark]->lineno;
8422     UNUSED(_start_lineno); // Only used by EXTRA macro
8423     int _start_col_offset = p->tokens[_mark]->col_offset;
8424     UNUSED(_start_col_offset); // Only used by EXTRA macro
8425     { // 'return' star_expressions?
8426         if (p->error_indicator) {
8427             p->level--;
8428             return NULL;
8429         }
8430         D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
8431         Token * _keyword;
8432         void *a;
8433         if (
8434             (_keyword = _PyPegen_expect_token(p, 500))  // token='return'
8435             &&
8436             (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
8437         )
8438         {
8439             D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
8440             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8441             if (_token == NULL) {
8442                 p->level--;
8443                 return NULL;
8444             }
8445             int _end_lineno = _token->end_lineno;
8446             UNUSED(_end_lineno); // Only used by EXTRA macro
8447             int _end_col_offset = _token->end_col_offset;
8448             UNUSED(_end_col_offset); // Only used by EXTRA macro
8449             _res = _PyAST_Return ( a , EXTRA );
8450             if (_res == NULL && PyErr_Occurred()) {
8451                 p->error_indicator = 1;
8452                 p->level--;
8453                 return NULL;
8454             }
8455             goto done;
8456         }
8457         p->mark = _mark;
8458         D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
8459                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
8460     }
8461     _res = NULL;
8462   done:
8463     p->level--;
8464     return _res;
8465 }
8466 
8467 // raise_stmt: 'raise' expression ['from' expression] | 'raise'
8468 static stmt_ty
raise_stmt_rule(Parser * p)8469 raise_stmt_rule(Parser *p)
8470 {
8471     if (p->level++ == MAXSTACK) {
8472         p->error_indicator = 1;
8473         PyErr_NoMemory();
8474     }
8475     if (p->error_indicator) {
8476         p->level--;
8477         return NULL;
8478     }
8479     stmt_ty _res = NULL;
8480     int _mark = p->mark;
8481     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8482         p->error_indicator = 1;
8483         p->level--;
8484         return NULL;
8485     }
8486     int _start_lineno = p->tokens[_mark]->lineno;
8487     UNUSED(_start_lineno); // Only used by EXTRA macro
8488     int _start_col_offset = p->tokens[_mark]->col_offset;
8489     UNUSED(_start_col_offset); // Only used by EXTRA macro
8490     { // 'raise' expression ['from' expression]
8491         if (p->error_indicator) {
8492             p->level--;
8493             return NULL;
8494         }
8495         D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
8496         Token * _keyword;
8497         expr_ty a;
8498         void *b;
8499         if (
8500             (_keyword = _PyPegen_expect_token(p, 501))  // token='raise'
8501             &&
8502             (a = expression_rule(p))  // expression
8503             &&
8504             (b = _tmp_66_rule(p), !p->error_indicator)  // ['from' expression]
8505         )
8506         {
8507             D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
8508             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8509             if (_token == NULL) {
8510                 p->level--;
8511                 return NULL;
8512             }
8513             int _end_lineno = _token->end_lineno;
8514             UNUSED(_end_lineno); // Only used by EXTRA macro
8515             int _end_col_offset = _token->end_col_offset;
8516             UNUSED(_end_col_offset); // Only used by EXTRA macro
8517             _res = _PyAST_Raise ( a , b , EXTRA );
8518             if (_res == NULL && PyErr_Occurred()) {
8519                 p->error_indicator = 1;
8520                 p->level--;
8521                 return NULL;
8522             }
8523             goto done;
8524         }
8525         p->mark = _mark;
8526         D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
8527                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression ['from' expression]"));
8528     }
8529     { // 'raise'
8530         if (p->error_indicator) {
8531             p->level--;
8532             return NULL;
8533         }
8534         D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
8535         Token * _keyword;
8536         if (
8537             (_keyword = _PyPegen_expect_token(p, 501))  // token='raise'
8538         )
8539         {
8540             D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
8541             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8542             if (_token == NULL) {
8543                 p->level--;
8544                 return NULL;
8545             }
8546             int _end_lineno = _token->end_lineno;
8547             UNUSED(_end_lineno); // Only used by EXTRA macro
8548             int _end_col_offset = _token->end_col_offset;
8549             UNUSED(_end_col_offset); // Only used by EXTRA macro
8550             _res = _PyAST_Raise ( NULL , NULL , EXTRA );
8551             if (_res == NULL && PyErr_Occurred()) {
8552                 p->error_indicator = 1;
8553                 p->level--;
8554                 return NULL;
8555             }
8556             goto done;
8557         }
8558         p->mark = _mark;
8559         D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
8560                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
8561     }
8562     _res = NULL;
8563   done:
8564     p->level--;
8565     return _res;
8566 }
8567 
8568 // function_def: decorators function_def_raw | function_def_raw
8569 static stmt_ty
function_def_rule(Parser * p)8570 function_def_rule(Parser *p)
8571 {
8572     if (p->level++ == MAXSTACK) {
8573         p->error_indicator = 1;
8574         PyErr_NoMemory();
8575     }
8576     if (p->error_indicator) {
8577         p->level--;
8578         return NULL;
8579     }
8580     stmt_ty _res = NULL;
8581     int _mark = p->mark;
8582     { // decorators function_def_raw
8583         if (p->error_indicator) {
8584             p->level--;
8585             return NULL;
8586         }
8587         D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
8588         asdl_expr_seq* d;
8589         stmt_ty f;
8590         if (
8591             (d = decorators_rule(p))  // decorators
8592             &&
8593             (f = function_def_raw_rule(p))  // function_def_raw
8594         )
8595         {
8596             D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
8597             _res = _PyPegen_function_def_decorators ( p , d , f );
8598             if (_res == NULL && PyErr_Occurred()) {
8599                 p->error_indicator = 1;
8600                 p->level--;
8601                 return NULL;
8602             }
8603             goto done;
8604         }
8605         p->mark = _mark;
8606         D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
8607                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
8608     }
8609     { // function_def_raw
8610         if (p->error_indicator) {
8611             p->level--;
8612             return NULL;
8613         }
8614         D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
8615         stmt_ty function_def_raw_var;
8616         if (
8617             (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
8618         )
8619         {
8620             D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
8621             _res = function_def_raw_var;
8622             goto done;
8623         }
8624         p->mark = _mark;
8625         D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
8626                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
8627     }
8628     _res = NULL;
8629   done:
8630     p->level--;
8631     return _res;
8632 }
8633 
8634 // function_def_raw:
8635 //     | invalid_def_raw
8636 //     | 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block
8637 //     | ASYNC 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block
8638 static stmt_ty
function_def_raw_rule(Parser * p)8639 function_def_raw_rule(Parser *p)
8640 {
8641     if (p->level++ == MAXSTACK) {
8642         p->error_indicator = 1;
8643         PyErr_NoMemory();
8644     }
8645     if (p->error_indicator) {
8646         p->level--;
8647         return NULL;
8648     }
8649     stmt_ty _res = NULL;
8650     int _mark = p->mark;
8651     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8652         p->error_indicator = 1;
8653         p->level--;
8654         return NULL;
8655     }
8656     int _start_lineno = p->tokens[_mark]->lineno;
8657     UNUSED(_start_lineno); // Only used by EXTRA macro
8658     int _start_col_offset = p->tokens[_mark]->col_offset;
8659     UNUSED(_start_col_offset); // Only used by EXTRA macro
8660     if (p->call_invalid_rules) { // invalid_def_raw
8661         if (p->error_indicator) {
8662             p->level--;
8663             return NULL;
8664         }
8665         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
8666         void *invalid_def_raw_var;
8667         if (
8668             (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
8669         )
8670         {
8671             D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
8672             _res = invalid_def_raw_var;
8673             goto done;
8674         }
8675         p->mark = _mark;
8676         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
8677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
8678     }
8679     { // 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block
8680         if (p->error_indicator) {
8681             p->level--;
8682             return NULL;
8683         }
8684         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block"));
8685         Token * _keyword;
8686         Token * _literal;
8687         Token * _literal_1;
8688         Token * _literal_2;
8689         void *a;
8690         asdl_stmt_seq* b;
8691         expr_ty n;
8692         void *params;
8693         void *tc;
8694         if (
8695             (_keyword = _PyPegen_expect_token(p, 526))  // token='def'
8696             &&
8697             (n = _PyPegen_name_token(p))  // NAME
8698             &&
8699             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8700             &&
8701             (params = params_rule(p), !p->error_indicator)  // params?
8702             &&
8703             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8704             &&
8705             (a = _tmp_67_rule(p), !p->error_indicator)  // ['->' expression]
8706             &&
8707             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
8708             &&
8709             (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
8710             &&
8711             (b = block_rule(p))  // block
8712         )
8713         {
8714             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"));
8715             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8716             if (_token == NULL) {
8717                 p->level--;
8718                 return NULL;
8719             }
8720             int _end_lineno = _token->end_lineno;
8721             UNUSED(_end_lineno); // Only used by EXTRA macro
8722             int _end_col_offset = _token->end_col_offset;
8723             UNUSED(_end_col_offset); // Only used by EXTRA macro
8724             _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 );
8725             if (_res == NULL && PyErr_Occurred()) {
8726                 p->error_indicator = 1;
8727                 p->level--;
8728                 return NULL;
8729             }
8730             goto done;
8731         }
8732         p->mark = _mark;
8733         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
8734                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block"));
8735     }
8736     { // ASYNC 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block
8737         if (p->error_indicator) {
8738             p->level--;
8739             return NULL;
8740         }
8741         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"));
8742         Token * _keyword;
8743         Token * _literal;
8744         Token * _literal_1;
8745         Token * _literal_2;
8746         void *a;
8747         Token * async_var;
8748         asdl_stmt_seq* b;
8749         expr_ty n;
8750         void *params;
8751         void *tc;
8752         if (
8753             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
8754             &&
8755             (_keyword = _PyPegen_expect_token(p, 526))  // token='def'
8756             &&
8757             (n = _PyPegen_name_token(p))  // NAME
8758             &&
8759             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8760             &&
8761             (params = params_rule(p), !p->error_indicator)  // params?
8762             &&
8763             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8764             &&
8765             (a = _tmp_68_rule(p), !p->error_indicator)  // ['->' expression]
8766             &&
8767             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
8768             &&
8769             (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
8770             &&
8771             (b = block_rule(p))  // block
8772         )
8773         {
8774             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"));
8775             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8776             if (_token == NULL) {
8777                 p->level--;
8778                 return NULL;
8779             }
8780             int _end_lineno = _token->end_lineno;
8781             UNUSED(_end_lineno); // Only used by EXTRA macro
8782             int _end_col_offset = _token->end_col_offset;
8783             UNUSED(_end_col_offset); // Only used by EXTRA macro
8784             _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 ) );
8785             if (_res == NULL && PyErr_Occurred()) {
8786                 p->error_indicator = 1;
8787                 p->level--;
8788                 return NULL;
8789             }
8790             goto done;
8791         }
8792         p->mark = _mark;
8793         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
8794                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block"));
8795     }
8796     _res = NULL;
8797   done:
8798     p->level--;
8799     return _res;
8800 }
8801 
8802 // func_type_comment:
8803 //     | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
8804 //     | invalid_double_type_comments
8805 //     | TYPE_COMMENT
8806 static Token*
func_type_comment_rule(Parser * p)8807 func_type_comment_rule(Parser *p)
8808 {
8809     if (p->level++ == MAXSTACK) {
8810         p->error_indicator = 1;
8811         PyErr_NoMemory();
8812     }
8813     if (p->error_indicator) {
8814         p->level--;
8815         return NULL;
8816     }
8817     Token* _res = NULL;
8818     int _mark = p->mark;
8819     { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
8820         if (p->error_indicator) {
8821             p->level--;
8822             return NULL;
8823         }
8824         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
8825         Token * newline_var;
8826         Token * t;
8827         if (
8828             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
8829             &&
8830             (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
8831             &&
8832             _PyPegen_lookahead(1, _tmp_69_rule, p)
8833         )
8834         {
8835             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
8836             _res = t;
8837             if (_res == NULL && PyErr_Occurred()) {
8838                 p->error_indicator = 1;
8839                 p->level--;
8840                 return NULL;
8841             }
8842             goto done;
8843         }
8844         p->mark = _mark;
8845         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
8846                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
8847     }
8848     if (p->call_invalid_rules) { // invalid_double_type_comments
8849         if (p->error_indicator) {
8850             p->level--;
8851             return NULL;
8852         }
8853         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
8854         void *invalid_double_type_comments_var;
8855         if (
8856             (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
8857         )
8858         {
8859             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
8860             _res = invalid_double_type_comments_var;
8861             goto done;
8862         }
8863         p->mark = _mark;
8864         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
8865                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
8866     }
8867     { // TYPE_COMMENT
8868         if (p->error_indicator) {
8869             p->level--;
8870             return NULL;
8871         }
8872         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
8873         Token * type_comment_var;
8874         if (
8875             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
8876         )
8877         {
8878             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
8879             _res = type_comment_var;
8880             goto done;
8881         }
8882         p->mark = _mark;
8883         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
8884                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
8885     }
8886     _res = NULL;
8887   done:
8888     p->level--;
8889     return _res;
8890 }
8891 
8892 // params: invalid_parameters | parameters
8893 static arguments_ty
params_rule(Parser * p)8894 params_rule(Parser *p)
8895 {
8896     if (p->level++ == MAXSTACK) {
8897         p->error_indicator = 1;
8898         PyErr_NoMemory();
8899     }
8900     if (p->error_indicator) {
8901         p->level--;
8902         return NULL;
8903     }
8904     arguments_ty _res = NULL;
8905     int _mark = p->mark;
8906     if (p->call_invalid_rules) { // invalid_parameters
8907         if (p->error_indicator) {
8908             p->level--;
8909             return NULL;
8910         }
8911         D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
8912         void *invalid_parameters_var;
8913         if (
8914             (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
8915         )
8916         {
8917             D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
8918             _res = invalid_parameters_var;
8919             goto done;
8920         }
8921         p->mark = _mark;
8922         D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
8923                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
8924     }
8925     { // parameters
8926         if (p->error_indicator) {
8927             p->level--;
8928             return NULL;
8929         }
8930         D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
8931         arguments_ty parameters_var;
8932         if (
8933             (parameters_var = parameters_rule(p))  // parameters
8934         )
8935         {
8936             D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
8937             _res = parameters_var;
8938             goto done;
8939         }
8940         p->mark = _mark;
8941         D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
8942                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
8943     }
8944     _res = NULL;
8945   done:
8946     p->level--;
8947     return _res;
8948 }
8949 
8950 // parameters:
8951 //     | slash_no_default param_no_default* param_with_default* star_etc?
8952 //     | slash_with_default param_with_default* star_etc?
8953 //     | param_no_default+ param_with_default* star_etc?
8954 //     | param_with_default+ star_etc?
8955 //     | star_etc
8956 static arguments_ty
parameters_rule(Parser * p)8957 parameters_rule(Parser *p)
8958 {
8959     if (p->level++ == MAXSTACK) {
8960         p->error_indicator = 1;
8961         PyErr_NoMemory();
8962     }
8963     if (p->error_indicator) {
8964         p->level--;
8965         return NULL;
8966     }
8967     arguments_ty _res = NULL;
8968     int _mark = p->mark;
8969     { // slash_no_default param_no_default* param_with_default* star_etc?
8970         if (p->error_indicator) {
8971             p->level--;
8972             return NULL;
8973         }
8974         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?"));
8975         asdl_arg_seq* a;
8976         asdl_arg_seq* b;
8977         asdl_seq * c;
8978         void *d;
8979         if (
8980             (a = slash_no_default_rule(p))  // slash_no_default
8981             &&
8982             (b = (asdl_arg_seq*)_loop0_70_rule(p))  // param_no_default*
8983             &&
8984             (c = _loop0_71_rule(p))  // param_with_default*
8985             &&
8986             (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
8987         )
8988         {
8989             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?"));
8990             _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
8991             if (_res == NULL && PyErr_Occurred()) {
8992                 p->error_indicator = 1;
8993                 p->level--;
8994                 return NULL;
8995             }
8996             goto done;
8997         }
8998         p->mark = _mark;
8999         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
9000                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
9001     }
9002     { // slash_with_default param_with_default* star_etc?
9003         if (p->error_indicator) {
9004             p->level--;
9005             return NULL;
9006         }
9007         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
9008         SlashWithDefault* a;
9009         asdl_seq * b;
9010         void *c;
9011         if (
9012             (a = slash_with_default_rule(p))  // slash_with_default
9013             &&
9014             (b = _loop0_72_rule(p))  // param_with_default*
9015             &&
9016             (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
9017         )
9018         {
9019             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
9020             _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
9021             if (_res == NULL && PyErr_Occurred()) {
9022                 p->error_indicator = 1;
9023                 p->level--;
9024                 return NULL;
9025             }
9026             goto done;
9027         }
9028         p->mark = _mark;
9029         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
9030                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
9031     }
9032     { // param_no_default+ param_with_default* star_etc?
9033         if (p->error_indicator) {
9034             p->level--;
9035             return NULL;
9036         }
9037         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
9038         asdl_arg_seq* a;
9039         asdl_seq * b;
9040         void *c;
9041         if (
9042             (a = (asdl_arg_seq*)_loop1_73_rule(p))  // param_no_default+
9043             &&
9044             (b = _loop0_74_rule(p))  // param_with_default*
9045             &&
9046             (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
9047         )
9048         {
9049             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
9050             _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
9051             if (_res == NULL && PyErr_Occurred()) {
9052                 p->error_indicator = 1;
9053                 p->level--;
9054                 return NULL;
9055             }
9056             goto done;
9057         }
9058         p->mark = _mark;
9059         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
9060                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
9061     }
9062     { // param_with_default+ star_etc?
9063         if (p->error_indicator) {
9064             p->level--;
9065             return NULL;
9066         }
9067         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
9068         asdl_seq * a;
9069         void *b;
9070         if (
9071             (a = _loop1_75_rule(p))  // param_with_default+
9072             &&
9073             (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
9074         )
9075         {
9076             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
9077             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
9078             if (_res == NULL && PyErr_Occurred()) {
9079                 p->error_indicator = 1;
9080                 p->level--;
9081                 return NULL;
9082             }
9083             goto done;
9084         }
9085         p->mark = _mark;
9086         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
9087                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
9088     }
9089     { // star_etc
9090         if (p->error_indicator) {
9091             p->level--;
9092             return NULL;
9093         }
9094         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
9095         StarEtc* a;
9096         if (
9097             (a = star_etc_rule(p))  // star_etc
9098         )
9099         {
9100             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
9101             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
9102             if (_res == NULL && PyErr_Occurred()) {
9103                 p->error_indicator = 1;
9104                 p->level--;
9105                 return NULL;
9106             }
9107             goto done;
9108         }
9109         p->mark = _mark;
9110         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
9111                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
9112     }
9113     _res = NULL;
9114   done:
9115     p->level--;
9116     return _res;
9117 }
9118 
9119 // slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
9120 static asdl_arg_seq*
slash_no_default_rule(Parser * p)9121 slash_no_default_rule(Parser *p)
9122 {
9123     if (p->level++ == MAXSTACK) {
9124         p->error_indicator = 1;
9125         PyErr_NoMemory();
9126     }
9127     if (p->error_indicator) {
9128         p->level--;
9129         return NULL;
9130     }
9131     asdl_arg_seq* _res = NULL;
9132     int _mark = p->mark;
9133     { // param_no_default+ '/' ','
9134         if (p->error_indicator) {
9135             p->level--;
9136             return NULL;
9137         }
9138         D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
9139         Token * _literal;
9140         Token * _literal_1;
9141         asdl_arg_seq* a;
9142         if (
9143             (a = (asdl_arg_seq*)_loop1_76_rule(p))  // param_no_default+
9144             &&
9145             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
9146             &&
9147             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
9148         )
9149         {
9150             D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
9151             _res = a;
9152             if (_res == NULL && PyErr_Occurred()) {
9153                 p->error_indicator = 1;
9154                 p->level--;
9155                 return NULL;
9156             }
9157             goto done;
9158         }
9159         p->mark = _mark;
9160         D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
9161                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
9162     }
9163     { // param_no_default+ '/' &')'
9164         if (p->error_indicator) {
9165             p->level--;
9166             return NULL;
9167         }
9168         D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
9169         Token * _literal;
9170         asdl_arg_seq* a;
9171         if (
9172             (a = (asdl_arg_seq*)_loop1_77_rule(p))  // param_no_default+
9173             &&
9174             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
9175             &&
9176             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9177         )
9178         {
9179             D(fprintf(stderr, "%*c+ slash_no_default[%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                 p->level--;
9184                 return NULL;
9185             }
9186             goto done;
9187         }
9188         p->mark = _mark;
9189         D(fprintf(stderr, "%*c%s slash_no_default[%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     p->level--;
9195     return _res;
9196 }
9197 
9198 // slash_with_default:
9199 //     | param_no_default* param_with_default+ '/' ','
9200 //     | param_no_default* param_with_default+ '/' &')'
9201 static SlashWithDefault*
slash_with_default_rule(Parser * p)9202 slash_with_default_rule(Parser *p)
9203 {
9204     if (p->level++ == MAXSTACK) {
9205         p->error_indicator = 1;
9206         PyErr_NoMemory();
9207     }
9208     if (p->error_indicator) {
9209         p->level--;
9210         return NULL;
9211     }
9212     SlashWithDefault* _res = NULL;
9213     int _mark = p->mark;
9214     { // param_no_default* param_with_default+ '/' ','
9215         if (p->error_indicator) {
9216             p->level--;
9217             return NULL;
9218         }
9219         D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
9220         Token * _literal;
9221         Token * _literal_1;
9222         asdl_seq * a;
9223         asdl_seq * b;
9224         if (
9225             (a = _loop0_78_rule(p))  // param_no_default*
9226             &&
9227             (b = _loop1_79_rule(p))  // param_with_default+
9228             &&
9229             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
9230             &&
9231             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
9232         )
9233         {
9234             D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
9235             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq * ) a , b );
9236             if (_res == NULL && PyErr_Occurred()) {
9237                 p->error_indicator = 1;
9238                 p->level--;
9239                 return NULL;
9240             }
9241             goto done;
9242         }
9243         p->mark = _mark;
9244         D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
9245                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
9246     }
9247     { // param_no_default* param_with_default+ '/' &')'
9248         if (p->error_indicator) {
9249             p->level--;
9250             return NULL;
9251         }
9252         D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
9253         Token * _literal;
9254         asdl_seq * a;
9255         asdl_seq * b;
9256         if (
9257             (a = _loop0_80_rule(p))  // param_no_default*
9258             &&
9259             (b = _loop1_81_rule(p))  // param_with_default+
9260             &&
9261             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
9262             &&
9263             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9264         )
9265         {
9266             D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
9267             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq * ) a , b );
9268             if (_res == NULL && PyErr_Occurred()) {
9269                 p->error_indicator = 1;
9270                 p->level--;
9271                 return NULL;
9272             }
9273             goto done;
9274         }
9275         p->mark = _mark;
9276         D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
9277                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
9278     }
9279     _res = NULL;
9280   done:
9281     p->level--;
9282     return _res;
9283 }
9284 
9285 // star_etc:
9286 //     | '*' param_no_default param_maybe_default* kwds?
9287 //     | '*' ',' param_maybe_default+ kwds?
9288 //     | kwds
9289 //     | invalid_star_etc
9290 static StarEtc*
star_etc_rule(Parser * p)9291 star_etc_rule(Parser *p)
9292 {
9293     if (p->level++ == MAXSTACK) {
9294         p->error_indicator = 1;
9295         PyErr_NoMemory();
9296     }
9297     if (p->error_indicator) {
9298         p->level--;
9299         return NULL;
9300     }
9301     StarEtc* _res = NULL;
9302     int _mark = p->mark;
9303     { // '*' param_no_default param_maybe_default* kwds?
9304         if (p->error_indicator) {
9305             p->level--;
9306             return NULL;
9307         }
9308         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
9309         Token * _literal;
9310         arg_ty a;
9311         asdl_seq * b;
9312         void *c;
9313         if (
9314             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
9315             &&
9316             (a = param_no_default_rule(p))  // param_no_default
9317             &&
9318             (b = _loop0_82_rule(p))  // param_maybe_default*
9319             &&
9320             (c = kwds_rule(p), !p->error_indicator)  // kwds?
9321         )
9322         {
9323             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
9324             _res = _PyPegen_star_etc ( p , a , b , c );
9325             if (_res == NULL && PyErr_Occurred()) {
9326                 p->error_indicator = 1;
9327                 p->level--;
9328                 return NULL;
9329             }
9330             goto done;
9331         }
9332         p->mark = _mark;
9333         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
9334                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
9335     }
9336     { // '*' ',' param_maybe_default+ kwds?
9337         if (p->error_indicator) {
9338             p->level--;
9339             return NULL;
9340         }
9341         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
9342         Token * _literal;
9343         Token * _literal_1;
9344         asdl_seq * b;
9345         void *c;
9346         if (
9347             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
9348             &&
9349             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
9350             &&
9351             (b = _loop1_83_rule(p))  // param_maybe_default+
9352             &&
9353             (c = kwds_rule(p), !p->error_indicator)  // kwds?
9354         )
9355         {
9356             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
9357             _res = _PyPegen_star_etc ( p , NULL , b , c );
9358             if (_res == NULL && PyErr_Occurred()) {
9359                 p->error_indicator = 1;
9360                 p->level--;
9361                 return NULL;
9362             }
9363             goto done;
9364         }
9365         p->mark = _mark;
9366         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
9367                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
9368     }
9369     { // kwds
9370         if (p->error_indicator) {
9371             p->level--;
9372             return NULL;
9373         }
9374         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
9375         arg_ty a;
9376         if (
9377             (a = kwds_rule(p))  // kwds
9378         )
9379         {
9380             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
9381             _res = _PyPegen_star_etc ( p , NULL , NULL , a );
9382             if (_res == NULL && PyErr_Occurred()) {
9383                 p->error_indicator = 1;
9384                 p->level--;
9385                 return NULL;
9386             }
9387             goto done;
9388         }
9389         p->mark = _mark;
9390         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
9391                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
9392     }
9393     if (p->call_invalid_rules) { // invalid_star_etc
9394         if (p->error_indicator) {
9395             p->level--;
9396             return NULL;
9397         }
9398         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
9399         void *invalid_star_etc_var;
9400         if (
9401             (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
9402         )
9403         {
9404             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
9405             _res = invalid_star_etc_var;
9406             goto done;
9407         }
9408         p->mark = _mark;
9409         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
9410                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
9411     }
9412     _res = NULL;
9413   done:
9414     p->level--;
9415     return _res;
9416 }
9417 
9418 // kwds: '**' param_no_default
9419 static arg_ty
kwds_rule(Parser * p)9420 kwds_rule(Parser *p)
9421 {
9422     if (p->level++ == MAXSTACK) {
9423         p->error_indicator = 1;
9424         PyErr_NoMemory();
9425     }
9426     if (p->error_indicator) {
9427         p->level--;
9428         return NULL;
9429     }
9430     arg_ty _res = NULL;
9431     int _mark = p->mark;
9432     { // '**' param_no_default
9433         if (p->error_indicator) {
9434             p->level--;
9435             return NULL;
9436         }
9437         D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
9438         Token * _literal;
9439         arg_ty a;
9440         if (
9441             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
9442             &&
9443             (a = param_no_default_rule(p))  // param_no_default
9444         )
9445         {
9446             D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
9447             _res = a;
9448             if (_res == NULL && PyErr_Occurred()) {
9449                 p->error_indicator = 1;
9450                 p->level--;
9451                 return NULL;
9452             }
9453             goto done;
9454         }
9455         p->mark = _mark;
9456         D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
9457                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
9458     }
9459     _res = NULL;
9460   done:
9461     p->level--;
9462     return _res;
9463 }
9464 
9465 // param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
9466 static arg_ty
param_no_default_rule(Parser * p)9467 param_no_default_rule(Parser *p)
9468 {
9469     if (p->level++ == MAXSTACK) {
9470         p->error_indicator = 1;
9471         PyErr_NoMemory();
9472     }
9473     if (p->error_indicator) {
9474         p->level--;
9475         return NULL;
9476     }
9477     arg_ty _res = NULL;
9478     int _mark = p->mark;
9479     { // param ',' TYPE_COMMENT?
9480         if (p->error_indicator) {
9481             p->level--;
9482             return NULL;
9483         }
9484         D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
9485         Token * _literal;
9486         arg_ty a;
9487         void *tc;
9488         if (
9489             (a = param_rule(p))  // param
9490             &&
9491             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9492             &&
9493             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9494         )
9495         {
9496             D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
9497             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
9498             if (_res == NULL && PyErr_Occurred()) {
9499                 p->error_indicator = 1;
9500                 p->level--;
9501                 return NULL;
9502             }
9503             goto done;
9504         }
9505         p->mark = _mark;
9506         D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
9507                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
9508     }
9509     { // param TYPE_COMMENT? &')'
9510         if (p->error_indicator) {
9511             p->level--;
9512             return NULL;
9513         }
9514         D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
9515         arg_ty a;
9516         void *tc;
9517         if (
9518             (a = param_rule(p))  // param
9519             &&
9520             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9521             &&
9522             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9523         )
9524         {
9525             D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
9526             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
9527             if (_res == NULL && PyErr_Occurred()) {
9528                 p->error_indicator = 1;
9529                 p->level--;
9530                 return NULL;
9531             }
9532             goto done;
9533         }
9534         p->mark = _mark;
9535         D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
9536                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
9537     }
9538     _res = NULL;
9539   done:
9540     p->level--;
9541     return _res;
9542 }
9543 
9544 // param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
9545 static NameDefaultPair*
param_with_default_rule(Parser * p)9546 param_with_default_rule(Parser *p)
9547 {
9548     if (p->level++ == MAXSTACK) {
9549         p->error_indicator = 1;
9550         PyErr_NoMemory();
9551     }
9552     if (p->error_indicator) {
9553         p->level--;
9554         return NULL;
9555     }
9556     NameDefaultPair* _res = NULL;
9557     int _mark = p->mark;
9558     { // param default ',' TYPE_COMMENT?
9559         if (p->error_indicator) {
9560             p->level--;
9561             return NULL;
9562         }
9563         D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
9564         Token * _literal;
9565         arg_ty a;
9566         expr_ty c;
9567         void *tc;
9568         if (
9569             (a = param_rule(p))  // param
9570             &&
9571             (c = default_rule(p))  // default
9572             &&
9573             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9574             &&
9575             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9576         )
9577         {
9578             D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
9579             _res = _PyPegen_name_default_pair ( p , a , c , tc );
9580             if (_res == NULL && PyErr_Occurred()) {
9581                 p->error_indicator = 1;
9582                 p->level--;
9583                 return NULL;
9584             }
9585             goto done;
9586         }
9587         p->mark = _mark;
9588         D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
9589                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
9590     }
9591     { // param default TYPE_COMMENT? &')'
9592         if (p->error_indicator) {
9593             p->level--;
9594             return NULL;
9595         }
9596         D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
9597         arg_ty a;
9598         expr_ty c;
9599         void *tc;
9600         if (
9601             (a = param_rule(p))  // param
9602             &&
9603             (c = default_rule(p))  // default
9604             &&
9605             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9606             &&
9607             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9608         )
9609         {
9610             D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
9611             _res = _PyPegen_name_default_pair ( p , a , c , tc );
9612             if (_res == NULL && PyErr_Occurred()) {
9613                 p->error_indicator = 1;
9614                 p->level--;
9615                 return NULL;
9616             }
9617             goto done;
9618         }
9619         p->mark = _mark;
9620         D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
9621                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
9622     }
9623     _res = NULL;
9624   done:
9625     p->level--;
9626     return _res;
9627 }
9628 
9629 // param_maybe_default:
9630 //     | param default? ',' TYPE_COMMENT?
9631 //     | param default? TYPE_COMMENT? &')'
9632 static NameDefaultPair*
param_maybe_default_rule(Parser * p)9633 param_maybe_default_rule(Parser *p)
9634 {
9635     if (p->level++ == MAXSTACK) {
9636         p->error_indicator = 1;
9637         PyErr_NoMemory();
9638     }
9639     if (p->error_indicator) {
9640         p->level--;
9641         return NULL;
9642     }
9643     NameDefaultPair* _res = NULL;
9644     int _mark = p->mark;
9645     { // param default? ',' TYPE_COMMENT?
9646         if (p->error_indicator) {
9647             p->level--;
9648             return NULL;
9649         }
9650         D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
9651         Token * _literal;
9652         arg_ty a;
9653         void *c;
9654         void *tc;
9655         if (
9656             (a = param_rule(p))  // param
9657             &&
9658             (c = default_rule(p), !p->error_indicator)  // default?
9659             &&
9660             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9661             &&
9662             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9663         )
9664         {
9665             D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
9666             _res = _PyPegen_name_default_pair ( p , a , c , tc );
9667             if (_res == NULL && PyErr_Occurred()) {
9668                 p->error_indicator = 1;
9669                 p->level--;
9670                 return NULL;
9671             }
9672             goto done;
9673         }
9674         p->mark = _mark;
9675         D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
9676                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
9677     }
9678     { // param default? TYPE_COMMENT? &')'
9679         if (p->error_indicator) {
9680             p->level--;
9681             return NULL;
9682         }
9683         D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
9684         arg_ty a;
9685         void *c;
9686         void *tc;
9687         if (
9688             (a = param_rule(p))  // param
9689             &&
9690             (c = default_rule(p), !p->error_indicator)  // default?
9691             &&
9692             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9693             &&
9694             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9695         )
9696         {
9697             D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
9698             _res = _PyPegen_name_default_pair ( p , a , c , tc );
9699             if (_res == NULL && PyErr_Occurred()) {
9700                 p->error_indicator = 1;
9701                 p->level--;
9702                 return NULL;
9703             }
9704             goto done;
9705         }
9706         p->mark = _mark;
9707         D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
9708                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
9709     }
9710     _res = NULL;
9711   done:
9712     p->level--;
9713     return _res;
9714 }
9715 
9716 // param: NAME annotation?
9717 static arg_ty
param_rule(Parser * p)9718 param_rule(Parser *p)
9719 {
9720     if (p->level++ == MAXSTACK) {
9721         p->error_indicator = 1;
9722         PyErr_NoMemory();
9723     }
9724     if (p->error_indicator) {
9725         p->level--;
9726         return NULL;
9727     }
9728     arg_ty _res = NULL;
9729     int _mark = p->mark;
9730     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9731         p->error_indicator = 1;
9732         p->level--;
9733         return NULL;
9734     }
9735     int _start_lineno = p->tokens[_mark]->lineno;
9736     UNUSED(_start_lineno); // Only used by EXTRA macro
9737     int _start_col_offset = p->tokens[_mark]->col_offset;
9738     UNUSED(_start_col_offset); // Only used by EXTRA macro
9739     { // NAME annotation?
9740         if (p->error_indicator) {
9741             p->level--;
9742             return NULL;
9743         }
9744         D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
9745         expr_ty a;
9746         void *b;
9747         if (
9748             (a = _PyPegen_name_token(p))  // NAME
9749             &&
9750             (b = annotation_rule(p), !p->error_indicator)  // annotation?
9751         )
9752         {
9753             D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
9754             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9755             if (_token == NULL) {
9756                 p->level--;
9757                 return NULL;
9758             }
9759             int _end_lineno = _token->end_lineno;
9760             UNUSED(_end_lineno); // Only used by EXTRA macro
9761             int _end_col_offset = _token->end_col_offset;
9762             UNUSED(_end_col_offset); // Only used by EXTRA macro
9763             _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
9764             if (_res == NULL && PyErr_Occurred()) {
9765                 p->error_indicator = 1;
9766                 p->level--;
9767                 return NULL;
9768             }
9769             goto done;
9770         }
9771         p->mark = _mark;
9772         D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
9773                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
9774     }
9775     _res = NULL;
9776   done:
9777     p->level--;
9778     return _res;
9779 }
9780 
9781 // annotation: ':' expression
9782 static expr_ty
annotation_rule(Parser * p)9783 annotation_rule(Parser *p)
9784 {
9785     if (p->level++ == MAXSTACK) {
9786         p->error_indicator = 1;
9787         PyErr_NoMemory();
9788     }
9789     if (p->error_indicator) {
9790         p->level--;
9791         return NULL;
9792     }
9793     expr_ty _res = NULL;
9794     int _mark = p->mark;
9795     { // ':' expression
9796         if (p->error_indicator) {
9797             p->level--;
9798             return NULL;
9799         }
9800         D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
9801         Token * _literal;
9802         expr_ty a;
9803         if (
9804             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
9805             &&
9806             (a = expression_rule(p))  // expression
9807         )
9808         {
9809             D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
9810             _res = a;
9811             if (_res == NULL && PyErr_Occurred()) {
9812                 p->error_indicator = 1;
9813                 p->level--;
9814                 return NULL;
9815             }
9816             goto done;
9817         }
9818         p->mark = _mark;
9819         D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
9820                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
9821     }
9822     _res = NULL;
9823   done:
9824     p->level--;
9825     return _res;
9826 }
9827 
9828 // default: '=' expression
9829 static expr_ty
default_rule(Parser * p)9830 default_rule(Parser *p)
9831 {
9832     if (p->level++ == MAXSTACK) {
9833         p->error_indicator = 1;
9834         PyErr_NoMemory();
9835     }
9836     if (p->error_indicator) {
9837         p->level--;
9838         return NULL;
9839     }
9840     expr_ty _res = NULL;
9841     int _mark = p->mark;
9842     { // '=' expression
9843         if (p->error_indicator) {
9844             p->level--;
9845             return NULL;
9846         }
9847         D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
9848         Token * _literal;
9849         expr_ty a;
9850         if (
9851             (_literal = _PyPegen_expect_token(p, 22))  // token='='
9852             &&
9853             (a = expression_rule(p))  // expression
9854         )
9855         {
9856             D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
9857             _res = a;
9858             if (_res == NULL && PyErr_Occurred()) {
9859                 p->error_indicator = 1;
9860                 p->level--;
9861                 return NULL;
9862             }
9863             goto done;
9864         }
9865         p->mark = _mark;
9866         D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
9867                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
9868     }
9869     _res = NULL;
9870   done:
9871     p->level--;
9872     return _res;
9873 }
9874 
9875 // decorators: (('@' named_expression NEWLINE))+
9876 static asdl_expr_seq*
decorators_rule(Parser * p)9877 decorators_rule(Parser *p)
9878 {
9879     if (p->level++ == MAXSTACK) {
9880         p->error_indicator = 1;
9881         PyErr_NoMemory();
9882     }
9883     if (p->error_indicator) {
9884         p->level--;
9885         return NULL;
9886     }
9887     asdl_expr_seq* _res = NULL;
9888     int _mark = p->mark;
9889     { // (('@' named_expression NEWLINE))+
9890         if (p->error_indicator) {
9891             p->level--;
9892             return NULL;
9893         }
9894         D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
9895         asdl_expr_seq* a;
9896         if (
9897             (a = (asdl_expr_seq*)_loop1_84_rule(p))  // (('@' named_expression NEWLINE))+
9898         )
9899         {
9900             D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
9901             _res = a;
9902             if (_res == NULL && PyErr_Occurred()) {
9903                 p->error_indicator = 1;
9904                 p->level--;
9905                 return NULL;
9906             }
9907             goto done;
9908         }
9909         p->mark = _mark;
9910         D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
9911                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
9912     }
9913     _res = NULL;
9914   done:
9915     p->level--;
9916     return _res;
9917 }
9918 
9919 // class_def: decorators class_def_raw | class_def_raw
9920 static stmt_ty
class_def_rule(Parser * p)9921 class_def_rule(Parser *p)
9922 {
9923     if (p->level++ == MAXSTACK) {
9924         p->error_indicator = 1;
9925         PyErr_NoMemory();
9926     }
9927     if (p->error_indicator) {
9928         p->level--;
9929         return NULL;
9930     }
9931     stmt_ty _res = NULL;
9932     int _mark = p->mark;
9933     { // decorators class_def_raw
9934         if (p->error_indicator) {
9935             p->level--;
9936             return NULL;
9937         }
9938         D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
9939         asdl_expr_seq* a;
9940         stmt_ty b;
9941         if (
9942             (a = decorators_rule(p))  // decorators
9943             &&
9944             (b = class_def_raw_rule(p))  // class_def_raw
9945         )
9946         {
9947             D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
9948             _res = _PyPegen_class_def_decorators ( p , a , b );
9949             if (_res == NULL && PyErr_Occurred()) {
9950                 p->error_indicator = 1;
9951                 p->level--;
9952                 return NULL;
9953             }
9954             goto done;
9955         }
9956         p->mark = _mark;
9957         D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
9958                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
9959     }
9960     { // class_def_raw
9961         if (p->error_indicator) {
9962             p->level--;
9963             return NULL;
9964         }
9965         D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
9966         stmt_ty class_def_raw_var;
9967         if (
9968             (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
9969         )
9970         {
9971             D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
9972             _res = class_def_raw_var;
9973             goto done;
9974         }
9975         p->mark = _mark;
9976         D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
9977                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
9978     }
9979     _res = NULL;
9980   done:
9981     p->level--;
9982     return _res;
9983 }
9984 
9985 // class_def_raw: invalid_class_def_raw | 'class' NAME ['(' arguments? ')'] &&':' block
9986 static stmt_ty
class_def_raw_rule(Parser * p)9987 class_def_raw_rule(Parser *p)
9988 {
9989     if (p->level++ == MAXSTACK) {
9990         p->error_indicator = 1;
9991         PyErr_NoMemory();
9992     }
9993     if (p->error_indicator) {
9994         p->level--;
9995         return NULL;
9996     }
9997     stmt_ty _res = NULL;
9998     int _mark = p->mark;
9999     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10000         p->error_indicator = 1;
10001         p->level--;
10002         return NULL;
10003     }
10004     int _start_lineno = p->tokens[_mark]->lineno;
10005     UNUSED(_start_lineno); // Only used by EXTRA macro
10006     int _start_col_offset = p->tokens[_mark]->col_offset;
10007     UNUSED(_start_col_offset); // Only used by EXTRA macro
10008     if (p->call_invalid_rules) { // invalid_class_def_raw
10009         if (p->error_indicator) {
10010             p->level--;
10011             return NULL;
10012         }
10013         D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
10014         void *invalid_class_def_raw_var;
10015         if (
10016             (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
10017         )
10018         {
10019             D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
10020             _res = invalid_class_def_raw_var;
10021             goto done;
10022         }
10023         p->mark = _mark;
10024         D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
10025                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
10026     }
10027     { // 'class' NAME ['(' arguments? ')'] &&':' block
10028         if (p->error_indicator) {
10029             p->level--;
10030             return NULL;
10031         }
10032         D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
10033         Token * _keyword;
10034         Token * _literal;
10035         expr_ty a;
10036         void *b;
10037         asdl_stmt_seq* c;
10038         if (
10039             (_keyword = _PyPegen_expect_token(p, 527))  // token='class'
10040             &&
10041             (a = _PyPegen_name_token(p))  // NAME
10042             &&
10043             (b = _tmp_85_rule(p), !p->error_indicator)  // ['(' arguments? ')']
10044             &&
10045             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
10046             &&
10047             (c = block_rule(p))  // block
10048         )
10049         {
10050             D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
10051             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10052             if (_token == NULL) {
10053                 p->level--;
10054                 return NULL;
10055             }
10056             int _end_lineno = _token->end_lineno;
10057             UNUSED(_end_lineno); // Only used by EXTRA macro
10058             int _end_col_offset = _token->end_col_offset;
10059             UNUSED(_end_col_offset); // Only used by EXTRA macro
10060             _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 );
10061             if (_res == NULL && PyErr_Occurred()) {
10062                 p->error_indicator = 1;
10063                 p->level--;
10064                 return NULL;
10065             }
10066             goto done;
10067         }
10068         p->mark = _mark;
10069         D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
10070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
10071     }
10072     _res = NULL;
10073   done:
10074     p->level--;
10075     return _res;
10076 }
10077 
10078 // block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
10079 static asdl_stmt_seq*
block_rule(Parser * p)10080 block_rule(Parser *p)
10081 {
10082     if (p->level++ == MAXSTACK) {
10083         p->error_indicator = 1;
10084         PyErr_NoMemory();
10085     }
10086     if (p->error_indicator) {
10087         p->level--;
10088         return NULL;
10089     }
10090     asdl_stmt_seq* _res = NULL;
10091     if (_PyPegen_is_memoized(p, block_type, &_res)) {
10092         p->level--;
10093         return _res;
10094     }
10095     int _mark = p->mark;
10096     { // NEWLINE INDENT statements DEDENT
10097         if (p->error_indicator) {
10098             p->level--;
10099             return NULL;
10100         }
10101         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
10102         asdl_stmt_seq* a;
10103         Token * dedent_var;
10104         Token * indent_var;
10105         Token * newline_var;
10106         if (
10107             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
10108             &&
10109             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
10110             &&
10111             (a = statements_rule(p))  // statements
10112             &&
10113             (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
10114         )
10115         {
10116             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
10117             _res = a;
10118             if (_res == NULL && PyErr_Occurred()) {
10119                 p->error_indicator = 1;
10120                 p->level--;
10121                 return NULL;
10122             }
10123             goto done;
10124         }
10125         p->mark = _mark;
10126         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
10127                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
10128     }
10129     { // simple_stmts
10130         if (p->error_indicator) {
10131             p->level--;
10132             return NULL;
10133         }
10134         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
10135         asdl_stmt_seq* simple_stmts_var;
10136         if (
10137             (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
10138         )
10139         {
10140             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
10141             _res = simple_stmts_var;
10142             goto done;
10143         }
10144         p->mark = _mark;
10145         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
10146                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
10147     }
10148     if (p->call_invalid_rules) { // invalid_block
10149         if (p->error_indicator) {
10150             p->level--;
10151             return NULL;
10152         }
10153         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
10154         void *invalid_block_var;
10155         if (
10156             (invalid_block_var = invalid_block_rule(p))  // invalid_block
10157         )
10158         {
10159             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
10160             _res = invalid_block_var;
10161             goto done;
10162         }
10163         p->mark = _mark;
10164         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
10165                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
10166     }
10167     _res = NULL;
10168   done:
10169     _PyPegen_insert_memo(p, _mark, block_type, _res);
10170     p->level--;
10171     return _res;
10172 }
10173 
10174 // star_expressions:
10175 //     | star_expression ((',' star_expression))+ ','?
10176 //     | star_expression ','
10177 //     | star_expression
10178 static expr_ty
star_expressions_rule(Parser * p)10179 star_expressions_rule(Parser *p)
10180 {
10181     if (p->level++ == MAXSTACK) {
10182         p->error_indicator = 1;
10183         PyErr_NoMemory();
10184     }
10185     if (p->error_indicator) {
10186         p->level--;
10187         return NULL;
10188     }
10189     expr_ty _res = NULL;
10190     int _mark = p->mark;
10191     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10192         p->error_indicator = 1;
10193         p->level--;
10194         return NULL;
10195     }
10196     int _start_lineno = p->tokens[_mark]->lineno;
10197     UNUSED(_start_lineno); // Only used by EXTRA macro
10198     int _start_col_offset = p->tokens[_mark]->col_offset;
10199     UNUSED(_start_col_offset); // Only used by EXTRA macro
10200     { // star_expression ((',' star_expression))+ ','?
10201         if (p->error_indicator) {
10202             p->level--;
10203             return NULL;
10204         }
10205         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10206         void *_opt_var;
10207         UNUSED(_opt_var); // Silence compiler warnings
10208         expr_ty a;
10209         asdl_seq * b;
10210         if (
10211             (a = star_expression_rule(p))  // star_expression
10212             &&
10213             (b = _loop1_86_rule(p))  // ((',' star_expression))+
10214             &&
10215             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10216         )
10217         {
10218             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10219             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10220             if (_token == NULL) {
10221                 p->level--;
10222                 return NULL;
10223             }
10224             int _end_lineno = _token->end_lineno;
10225             UNUSED(_end_lineno); // Only used by EXTRA macro
10226             int _end_col_offset = _token->end_col_offset;
10227             UNUSED(_end_col_offset); // Only used by EXTRA macro
10228             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
10229             if (_res == NULL && PyErr_Occurred()) {
10230                 p->error_indicator = 1;
10231                 p->level--;
10232                 return NULL;
10233             }
10234             goto done;
10235         }
10236         p->mark = _mark;
10237         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10238                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10239     }
10240     { // star_expression ','
10241         if (p->error_indicator) {
10242             p->level--;
10243             return NULL;
10244         }
10245         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
10246         Token * _literal;
10247         expr_ty a;
10248         if (
10249             (a = star_expression_rule(p))  // star_expression
10250             &&
10251             (_literal = _PyPegen_expect_token(p, 12))  // token=','
10252         )
10253         {
10254             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
10255             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10256             if (_token == NULL) {
10257                 p->level--;
10258                 return NULL;
10259             }
10260             int _end_lineno = _token->end_lineno;
10261             UNUSED(_end_lineno); // Only used by EXTRA macro
10262             int _end_col_offset = _token->end_col_offset;
10263             UNUSED(_end_col_offset); // Only used by EXTRA macro
10264             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
10265             if (_res == NULL && PyErr_Occurred()) {
10266                 p->error_indicator = 1;
10267                 p->level--;
10268                 return NULL;
10269             }
10270             goto done;
10271         }
10272         p->mark = _mark;
10273         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10274                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
10275     }
10276     { // star_expression
10277         if (p->error_indicator) {
10278             p->level--;
10279             return NULL;
10280         }
10281         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
10282         expr_ty star_expression_var;
10283         if (
10284             (star_expression_var = star_expression_rule(p))  // star_expression
10285         )
10286         {
10287             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
10288             _res = star_expression_var;
10289             goto done;
10290         }
10291         p->mark = _mark;
10292         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10293                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
10294     }
10295     _res = NULL;
10296   done:
10297     p->level--;
10298     return _res;
10299 }
10300 
10301 // star_expression: '*' bitwise_or | expression
10302 static expr_ty
star_expression_rule(Parser * p)10303 star_expression_rule(Parser *p)
10304 {
10305     if (p->level++ == MAXSTACK) {
10306         p->error_indicator = 1;
10307         PyErr_NoMemory();
10308     }
10309     if (p->error_indicator) {
10310         p->level--;
10311         return NULL;
10312     }
10313     expr_ty _res = NULL;
10314     if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
10315         p->level--;
10316         return _res;
10317     }
10318     int _mark = p->mark;
10319     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10320         p->error_indicator = 1;
10321         p->level--;
10322         return NULL;
10323     }
10324     int _start_lineno = p->tokens[_mark]->lineno;
10325     UNUSED(_start_lineno); // Only used by EXTRA macro
10326     int _start_col_offset = p->tokens[_mark]->col_offset;
10327     UNUSED(_start_col_offset); // Only used by EXTRA macro
10328     { // '*' bitwise_or
10329         if (p->error_indicator) {
10330             p->level--;
10331             return NULL;
10332         }
10333         D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10334         Token * _literal;
10335         expr_ty a;
10336         if (
10337             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10338             &&
10339             (a = bitwise_or_rule(p))  // bitwise_or
10340         )
10341         {
10342             D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10343             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10344             if (_token == NULL) {
10345                 p->level--;
10346                 return NULL;
10347             }
10348             int _end_lineno = _token->end_lineno;
10349             UNUSED(_end_lineno); // Only used by EXTRA macro
10350             int _end_col_offset = _token->end_col_offset;
10351             UNUSED(_end_col_offset); // Only used by EXTRA macro
10352             _res = _PyAST_Starred ( a , Load , EXTRA );
10353             if (_res == NULL && PyErr_Occurred()) {
10354                 p->error_indicator = 1;
10355                 p->level--;
10356                 return NULL;
10357             }
10358             goto done;
10359         }
10360         p->mark = _mark;
10361         D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
10362                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
10363     }
10364     { // expression
10365         if (p->error_indicator) {
10366             p->level--;
10367             return NULL;
10368         }
10369         D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
10370         expr_ty expression_var;
10371         if (
10372             (expression_var = expression_rule(p))  // expression
10373         )
10374         {
10375             D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
10376             _res = expression_var;
10377             goto done;
10378         }
10379         p->mark = _mark;
10380         D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
10381                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
10382     }
10383     _res = NULL;
10384   done:
10385     _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
10386     p->level--;
10387     return _res;
10388 }
10389 
10390 // star_named_expressions: ','.star_named_expression+ ','?
10391 static asdl_expr_seq*
star_named_expressions_rule(Parser * p)10392 star_named_expressions_rule(Parser *p)
10393 {
10394     if (p->level++ == MAXSTACK) {
10395         p->error_indicator = 1;
10396         PyErr_NoMemory();
10397     }
10398     if (p->error_indicator) {
10399         p->level--;
10400         return NULL;
10401     }
10402     asdl_expr_seq* _res = NULL;
10403     int _mark = p->mark;
10404     { // ','.star_named_expression+ ','?
10405         if (p->error_indicator) {
10406             p->level--;
10407             return NULL;
10408         }
10409         D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
10410         void *_opt_var;
10411         UNUSED(_opt_var); // Silence compiler warnings
10412         asdl_expr_seq* a;
10413         if (
10414             (a = (asdl_expr_seq*)_gather_87_rule(p))  // ','.star_named_expression+
10415             &&
10416             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10417         )
10418         {
10419             D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
10420             _res = a;
10421             if (_res == NULL && PyErr_Occurred()) {
10422                 p->error_indicator = 1;
10423                 p->level--;
10424                 return NULL;
10425             }
10426             goto done;
10427         }
10428         p->mark = _mark;
10429         D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10430                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
10431     }
10432     _res = NULL;
10433   done:
10434     p->level--;
10435     return _res;
10436 }
10437 
10438 // star_named_expression: '*' bitwise_or | named_expression
10439 static expr_ty
star_named_expression_rule(Parser * p)10440 star_named_expression_rule(Parser *p)
10441 {
10442     if (p->level++ == MAXSTACK) {
10443         p->error_indicator = 1;
10444         PyErr_NoMemory();
10445     }
10446     if (p->error_indicator) {
10447         p->level--;
10448         return NULL;
10449     }
10450     expr_ty _res = NULL;
10451     int _mark = p->mark;
10452     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10453         p->error_indicator = 1;
10454         p->level--;
10455         return NULL;
10456     }
10457     int _start_lineno = p->tokens[_mark]->lineno;
10458     UNUSED(_start_lineno); // Only used by EXTRA macro
10459     int _start_col_offset = p->tokens[_mark]->col_offset;
10460     UNUSED(_start_col_offset); // Only used by EXTRA macro
10461     { // '*' bitwise_or
10462         if (p->error_indicator) {
10463             p->level--;
10464             return NULL;
10465         }
10466         D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10467         Token * _literal;
10468         expr_ty a;
10469         if (
10470             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10471             &&
10472             (a = bitwise_or_rule(p))  // bitwise_or
10473         )
10474         {
10475             D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10476             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10477             if (_token == NULL) {
10478                 p->level--;
10479                 return NULL;
10480             }
10481             int _end_lineno = _token->end_lineno;
10482             UNUSED(_end_lineno); // Only used by EXTRA macro
10483             int _end_col_offset = _token->end_col_offset;
10484             UNUSED(_end_col_offset); // Only used by EXTRA macro
10485             _res = _PyAST_Starred ( a , Load , EXTRA );
10486             if (_res == NULL && PyErr_Occurred()) {
10487                 p->error_indicator = 1;
10488                 p->level--;
10489                 return NULL;
10490             }
10491             goto done;
10492         }
10493         p->mark = _mark;
10494         D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10495                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
10496     }
10497     { // named_expression
10498         if (p->error_indicator) {
10499             p->level--;
10500             return NULL;
10501         }
10502         D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
10503         expr_ty named_expression_var;
10504         if (
10505             (named_expression_var = named_expression_rule(p))  // named_expression
10506         )
10507         {
10508             D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
10509             _res = named_expression_var;
10510             goto done;
10511         }
10512         p->mark = _mark;
10513         D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10514                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
10515     }
10516     _res = NULL;
10517   done:
10518     p->level--;
10519     return _res;
10520 }
10521 
10522 // assignment_expression: NAME ':=' ~ expression
10523 static expr_ty
assignment_expression_rule(Parser * p)10524 assignment_expression_rule(Parser *p)
10525 {
10526     if (p->level++ == MAXSTACK) {
10527         p->error_indicator = 1;
10528         PyErr_NoMemory();
10529     }
10530     if (p->error_indicator) {
10531         p->level--;
10532         return NULL;
10533     }
10534     expr_ty _res = NULL;
10535     int _mark = p->mark;
10536     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10537         p->error_indicator = 1;
10538         p->level--;
10539         return NULL;
10540     }
10541     int _start_lineno = p->tokens[_mark]->lineno;
10542     UNUSED(_start_lineno); // Only used by EXTRA macro
10543     int _start_col_offset = p->tokens[_mark]->col_offset;
10544     UNUSED(_start_col_offset); // Only used by EXTRA macro
10545     { // NAME ':=' ~ expression
10546         if (p->error_indicator) {
10547             p->level--;
10548             return NULL;
10549         }
10550         D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
10551         int _cut_var = 0;
10552         Token * _literal;
10553         expr_ty a;
10554         expr_ty b;
10555         if (
10556             (a = _PyPegen_name_token(p))  // NAME
10557             &&
10558             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
10559             &&
10560             (_cut_var = 1)
10561             &&
10562             (b = expression_rule(p))  // expression
10563         )
10564         {
10565             D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
10566             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10567             if (_token == NULL) {
10568                 p->level--;
10569                 return NULL;
10570             }
10571             int _end_lineno = _token->end_lineno;
10572             UNUSED(_end_lineno); // Only used by EXTRA macro
10573             int _end_col_offset = _token->end_col_offset;
10574             UNUSED(_end_col_offset); // Only used by EXTRA macro
10575             _res = _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
10576             if (_res == NULL && PyErr_Occurred()) {
10577                 p->error_indicator = 1;
10578                 p->level--;
10579                 return NULL;
10580             }
10581             goto done;
10582         }
10583         p->mark = _mark;
10584         D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
10585                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
10586         if (_cut_var) {
10587             p->level--;
10588             return NULL;
10589         }
10590     }
10591     _res = NULL;
10592   done:
10593     p->level--;
10594     return _res;
10595 }
10596 
10597 // named_expression: assignment_expression | invalid_named_expression | expression !':='
10598 static expr_ty
named_expression_rule(Parser * p)10599 named_expression_rule(Parser *p)
10600 {
10601     if (p->level++ == MAXSTACK) {
10602         p->error_indicator = 1;
10603         PyErr_NoMemory();
10604     }
10605     if (p->error_indicator) {
10606         p->level--;
10607         return NULL;
10608     }
10609     expr_ty _res = NULL;
10610     int _mark = p->mark;
10611     { // assignment_expression
10612         if (p->error_indicator) {
10613             p->level--;
10614             return NULL;
10615         }
10616         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
10617         expr_ty assignment_expression_var;
10618         if (
10619             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
10620         )
10621         {
10622             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
10623             _res = assignment_expression_var;
10624             goto done;
10625         }
10626         p->mark = _mark;
10627         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10628                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
10629     }
10630     if (p->call_invalid_rules) { // invalid_named_expression
10631         if (p->error_indicator) {
10632             p->level--;
10633             return NULL;
10634         }
10635         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
10636         void *invalid_named_expression_var;
10637         if (
10638             (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
10639         )
10640         {
10641             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
10642             _res = invalid_named_expression_var;
10643             goto done;
10644         }
10645         p->mark = _mark;
10646         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10647                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
10648     }
10649     { // expression !':='
10650         if (p->error_indicator) {
10651             p->level--;
10652             return NULL;
10653         }
10654         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
10655         expr_ty expression_var;
10656         if (
10657             (expression_var = expression_rule(p))  // expression
10658             &&
10659             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
10660         )
10661         {
10662             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
10663             _res = expression_var;
10664             goto done;
10665         }
10666         p->mark = _mark;
10667         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10668                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
10669     }
10670     _res = NULL;
10671   done:
10672     p->level--;
10673     return _res;
10674 }
10675 
10676 // annotated_rhs: yield_expr | star_expressions
10677 static expr_ty
annotated_rhs_rule(Parser * p)10678 annotated_rhs_rule(Parser *p)
10679 {
10680     if (p->level++ == MAXSTACK) {
10681         p->error_indicator = 1;
10682         PyErr_NoMemory();
10683     }
10684     if (p->error_indicator) {
10685         p->level--;
10686         return NULL;
10687     }
10688     expr_ty _res = NULL;
10689     int _mark = p->mark;
10690     { // yield_expr
10691         if (p->error_indicator) {
10692             p->level--;
10693             return NULL;
10694         }
10695         D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
10696         expr_ty yield_expr_var;
10697         if (
10698             (yield_expr_var = yield_expr_rule(p))  // yield_expr
10699         )
10700         {
10701             D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
10702             _res = yield_expr_var;
10703             goto done;
10704         }
10705         p->mark = _mark;
10706         D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
10707                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
10708     }
10709     { // star_expressions
10710         if (p->error_indicator) {
10711             p->level--;
10712             return NULL;
10713         }
10714         D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
10715         expr_ty star_expressions_var;
10716         if (
10717             (star_expressions_var = star_expressions_rule(p))  // star_expressions
10718         )
10719         {
10720             D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
10721             _res = star_expressions_var;
10722             goto done;
10723         }
10724         p->mark = _mark;
10725         D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
10726                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
10727     }
10728     _res = NULL;
10729   done:
10730     p->level--;
10731     return _res;
10732 }
10733 
10734 // expressions: expression ((',' expression))+ ','? | expression ',' | expression
10735 static expr_ty
expressions_rule(Parser * p)10736 expressions_rule(Parser *p)
10737 {
10738     if (p->level++ == MAXSTACK) {
10739         p->error_indicator = 1;
10740         PyErr_NoMemory();
10741     }
10742     if (p->error_indicator) {
10743         p->level--;
10744         return NULL;
10745     }
10746     expr_ty _res = NULL;
10747     int _mark = p->mark;
10748     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10749         p->error_indicator = 1;
10750         p->level--;
10751         return NULL;
10752     }
10753     int _start_lineno = p->tokens[_mark]->lineno;
10754     UNUSED(_start_lineno); // Only used by EXTRA macro
10755     int _start_col_offset = p->tokens[_mark]->col_offset;
10756     UNUSED(_start_col_offset); // Only used by EXTRA macro
10757     { // expression ((',' expression))+ ','?
10758         if (p->error_indicator) {
10759             p->level--;
10760             return NULL;
10761         }
10762         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
10763         void *_opt_var;
10764         UNUSED(_opt_var); // Silence compiler warnings
10765         expr_ty a;
10766         asdl_seq * b;
10767         if (
10768             (a = expression_rule(p))  // expression
10769             &&
10770             (b = _loop1_89_rule(p))  // ((',' expression))+
10771             &&
10772             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10773         )
10774         {
10775             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
10776             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10777             if (_token == NULL) {
10778                 p->level--;
10779                 return NULL;
10780             }
10781             int _end_lineno = _token->end_lineno;
10782             UNUSED(_end_lineno); // Only used by EXTRA macro
10783             int _end_col_offset = _token->end_col_offset;
10784             UNUSED(_end_col_offset); // Only used by EXTRA macro
10785             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
10786             if (_res == NULL && PyErr_Occurred()) {
10787                 p->error_indicator = 1;
10788                 p->level--;
10789                 return NULL;
10790             }
10791             goto done;
10792         }
10793         p->mark = _mark;
10794         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10795                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
10796     }
10797     { // expression ','
10798         if (p->error_indicator) {
10799             p->level--;
10800             return NULL;
10801         }
10802         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
10803         Token * _literal;
10804         expr_ty a;
10805         if (
10806             (a = expression_rule(p))  // expression
10807             &&
10808             (_literal = _PyPegen_expect_token(p, 12))  // token=','
10809         )
10810         {
10811             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
10812             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10813             if (_token == NULL) {
10814                 p->level--;
10815                 return NULL;
10816             }
10817             int _end_lineno = _token->end_lineno;
10818             UNUSED(_end_lineno); // Only used by EXTRA macro
10819             int _end_col_offset = _token->end_col_offset;
10820             UNUSED(_end_col_offset); // Only used by EXTRA macro
10821             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
10822             if (_res == NULL && PyErr_Occurred()) {
10823                 p->error_indicator = 1;
10824                 p->level--;
10825                 return NULL;
10826             }
10827             goto done;
10828         }
10829         p->mark = _mark;
10830         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10831                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
10832     }
10833     { // expression
10834         if (p->error_indicator) {
10835             p->level--;
10836             return NULL;
10837         }
10838         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
10839         expr_ty expression_var;
10840         if (
10841             (expression_var = expression_rule(p))  // expression
10842         )
10843         {
10844             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
10845             _res = expression_var;
10846             goto done;
10847         }
10848         p->mark = _mark;
10849         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10850                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
10851     }
10852     _res = NULL;
10853   done:
10854     p->level--;
10855     return _res;
10856 }
10857 
10858 // expression:
10859 //     | invalid_expression
10860 //     | invalid_legacy_expression
10861 //     | disjunction 'if' disjunction 'else' expression
10862 //     | disjunction
10863 //     | lambdef
10864 static expr_ty
expression_rule(Parser * p)10865 expression_rule(Parser *p)
10866 {
10867     if (p->level++ == MAXSTACK) {
10868         p->error_indicator = 1;
10869         PyErr_NoMemory();
10870     }
10871     if (p->error_indicator) {
10872         p->level--;
10873         return NULL;
10874     }
10875     expr_ty _res = NULL;
10876     if (_PyPegen_is_memoized(p, expression_type, &_res)) {
10877         p->level--;
10878         return _res;
10879     }
10880     int _mark = p->mark;
10881     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10882         p->error_indicator = 1;
10883         p->level--;
10884         return NULL;
10885     }
10886     int _start_lineno = p->tokens[_mark]->lineno;
10887     UNUSED(_start_lineno); // Only used by EXTRA macro
10888     int _start_col_offset = p->tokens[_mark]->col_offset;
10889     UNUSED(_start_col_offset); // Only used by EXTRA macro
10890     if (p->call_invalid_rules) { // invalid_expression
10891         if (p->error_indicator) {
10892             p->level--;
10893             return NULL;
10894         }
10895         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
10896         void *invalid_expression_var;
10897         if (
10898             (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
10899         )
10900         {
10901             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
10902             _res = invalid_expression_var;
10903             goto done;
10904         }
10905         p->mark = _mark;
10906         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10907                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
10908     }
10909     if (p->call_invalid_rules) { // invalid_legacy_expression
10910         if (p->error_indicator) {
10911             p->level--;
10912             return NULL;
10913         }
10914         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
10915         void *invalid_legacy_expression_var;
10916         if (
10917             (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
10918         )
10919         {
10920             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
10921             _res = invalid_legacy_expression_var;
10922             goto done;
10923         }
10924         p->mark = _mark;
10925         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10926                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
10927     }
10928     { // disjunction 'if' disjunction 'else' expression
10929         if (p->error_indicator) {
10930             p->level--;
10931             return NULL;
10932         }
10933         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10934         Token * _keyword;
10935         Token * _keyword_1;
10936         expr_ty a;
10937         expr_ty b;
10938         expr_ty c;
10939         if (
10940             (a = disjunction_rule(p))  // disjunction
10941             &&
10942             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
10943             &&
10944             (b = disjunction_rule(p))  // disjunction
10945             &&
10946             (_keyword_1 = _PyPegen_expect_token(p, 516))  // token='else'
10947             &&
10948             (c = expression_rule(p))  // expression
10949         )
10950         {
10951             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10952             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10953             if (_token == NULL) {
10954                 p->level--;
10955                 return NULL;
10956             }
10957             int _end_lineno = _token->end_lineno;
10958             UNUSED(_end_lineno); // Only used by EXTRA macro
10959             int _end_col_offset = _token->end_col_offset;
10960             UNUSED(_end_col_offset); // Only used by EXTRA macro
10961             _res = _PyAST_IfExp ( b , a , c , EXTRA );
10962             if (_res == NULL && PyErr_Occurred()) {
10963                 p->error_indicator = 1;
10964                 p->level--;
10965                 return NULL;
10966             }
10967             goto done;
10968         }
10969         p->mark = _mark;
10970         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10971                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10972     }
10973     { // disjunction
10974         if (p->error_indicator) {
10975             p->level--;
10976             return NULL;
10977         }
10978         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
10979         expr_ty disjunction_var;
10980         if (
10981             (disjunction_var = disjunction_rule(p))  // disjunction
10982         )
10983         {
10984             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
10985             _res = disjunction_var;
10986             goto done;
10987         }
10988         p->mark = _mark;
10989         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10990                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
10991     }
10992     { // lambdef
10993         if (p->error_indicator) {
10994             p->level--;
10995             return NULL;
10996         }
10997         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
10998         expr_ty lambdef_var;
10999         if (
11000             (lambdef_var = lambdef_rule(p))  // lambdef
11001         )
11002         {
11003             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
11004             _res = lambdef_var;
11005             goto done;
11006         }
11007         p->mark = _mark;
11008         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11009                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
11010     }
11011     _res = NULL;
11012   done:
11013     _PyPegen_insert_memo(p, _mark, expression_type, _res);
11014     p->level--;
11015     return _res;
11016 }
11017 
11018 // lambdef: 'lambda' lambda_params? ':' expression
11019 static expr_ty
lambdef_rule(Parser * p)11020 lambdef_rule(Parser *p)
11021 {
11022     if (p->level++ == MAXSTACK) {
11023         p->error_indicator = 1;
11024         PyErr_NoMemory();
11025     }
11026     if (p->error_indicator) {
11027         p->level--;
11028         return NULL;
11029     }
11030     expr_ty _res = NULL;
11031     int _mark = p->mark;
11032     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11033         p->error_indicator = 1;
11034         p->level--;
11035         return NULL;
11036     }
11037     int _start_lineno = p->tokens[_mark]->lineno;
11038     UNUSED(_start_lineno); // Only used by EXTRA macro
11039     int _start_col_offset = p->tokens[_mark]->col_offset;
11040     UNUSED(_start_col_offset); // Only used by EXTRA macro
11041     { // 'lambda' lambda_params? ':' expression
11042         if (p->error_indicator) {
11043             p->level--;
11044             return NULL;
11045         }
11046         D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
11047         Token * _keyword;
11048         Token * _literal;
11049         void *a;
11050         expr_ty b;
11051         if (
11052             (_keyword = _PyPegen_expect_token(p, 528))  // token='lambda'
11053             &&
11054             (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
11055             &&
11056             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
11057             &&
11058             (b = expression_rule(p))  // expression
11059         )
11060         {
11061             D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
11062             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11063             if (_token == NULL) {
11064                 p->level--;
11065                 return NULL;
11066             }
11067             int _end_lineno = _token->end_lineno;
11068             UNUSED(_end_lineno); // Only used by EXTRA macro
11069             int _end_col_offset = _token->end_col_offset;
11070             UNUSED(_end_col_offset); // Only used by EXTRA macro
11071             _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
11072             if (_res == NULL && PyErr_Occurred()) {
11073                 p->error_indicator = 1;
11074                 p->level--;
11075                 return NULL;
11076             }
11077             goto done;
11078         }
11079         p->mark = _mark;
11080         D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
11081                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
11082     }
11083     _res = NULL;
11084   done:
11085     p->level--;
11086     return _res;
11087 }
11088 
11089 // lambda_params: invalid_lambda_parameters | lambda_parameters
11090 static arguments_ty
lambda_params_rule(Parser * p)11091 lambda_params_rule(Parser *p)
11092 {
11093     if (p->level++ == MAXSTACK) {
11094         p->error_indicator = 1;
11095         PyErr_NoMemory();
11096     }
11097     if (p->error_indicator) {
11098         p->level--;
11099         return NULL;
11100     }
11101     arguments_ty _res = NULL;
11102     int _mark = p->mark;
11103     if (p->call_invalid_rules) { // invalid_lambda_parameters
11104         if (p->error_indicator) {
11105             p->level--;
11106             return NULL;
11107         }
11108         D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
11109         void *invalid_lambda_parameters_var;
11110         if (
11111             (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
11112         )
11113         {
11114             D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
11115             _res = invalid_lambda_parameters_var;
11116             goto done;
11117         }
11118         p->mark = _mark;
11119         D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
11120                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
11121     }
11122     { // lambda_parameters
11123         if (p->error_indicator) {
11124             p->level--;
11125             return NULL;
11126         }
11127         D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
11128         arguments_ty lambda_parameters_var;
11129         if (
11130             (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
11131         )
11132         {
11133             D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
11134             _res = lambda_parameters_var;
11135             goto done;
11136         }
11137         p->mark = _mark;
11138         D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
11139                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
11140     }
11141     _res = NULL;
11142   done:
11143     p->level--;
11144     return _res;
11145 }
11146 
11147 // lambda_parameters:
11148 //     | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
11149 //     | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
11150 //     | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
11151 //     | lambda_param_with_default+ lambda_star_etc?
11152 //     | lambda_star_etc
11153 static arguments_ty
lambda_parameters_rule(Parser * p)11154 lambda_parameters_rule(Parser *p)
11155 {
11156     if (p->level++ == MAXSTACK) {
11157         p->error_indicator = 1;
11158         PyErr_NoMemory();
11159     }
11160     if (p->error_indicator) {
11161         p->level--;
11162         return NULL;
11163     }
11164     arguments_ty _res = NULL;
11165     int _mark = p->mark;
11166     { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
11167         if (p->error_indicator) {
11168             p->level--;
11169             return NULL;
11170         }
11171         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?"));
11172         asdl_arg_seq* a;
11173         asdl_arg_seq* b;
11174         asdl_seq * c;
11175         void *d;
11176         if (
11177             (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
11178             &&
11179             (b = (asdl_arg_seq*)_loop0_90_rule(p))  // lambda_param_no_default*
11180             &&
11181             (c = _loop0_91_rule(p))  // lambda_param_with_default*
11182             &&
11183             (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
11184         )
11185         {
11186             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?"));
11187             _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
11188             if (_res == NULL && PyErr_Occurred()) {
11189                 p->error_indicator = 1;
11190                 p->level--;
11191                 return NULL;
11192             }
11193             goto done;
11194         }
11195         p->mark = _mark;
11196         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
11197                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
11198     }
11199     { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
11200         if (p->error_indicator) {
11201             p->level--;
11202             return NULL;
11203         }
11204         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?"));
11205         SlashWithDefault* a;
11206         asdl_seq * b;
11207         void *c;
11208         if (
11209             (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
11210             &&
11211             (b = _loop0_92_rule(p))  // lambda_param_with_default*
11212             &&
11213             (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
11214         )
11215         {
11216             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?"));
11217             _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
11218             if (_res == NULL && PyErr_Occurred()) {
11219                 p->error_indicator = 1;
11220                 p->level--;
11221                 return NULL;
11222             }
11223             goto done;
11224         }
11225         p->mark = _mark;
11226         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
11227                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
11228     }
11229     { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
11230         if (p->error_indicator) {
11231             p->level--;
11232             return NULL;
11233         }
11234         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?"));
11235         asdl_arg_seq* a;
11236         asdl_seq * b;
11237         void *c;
11238         if (
11239             (a = (asdl_arg_seq*)_loop1_93_rule(p))  // lambda_param_no_default+
11240             &&
11241             (b = _loop0_94_rule(p))  // lambda_param_with_default*
11242             &&
11243             (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
11244         )
11245         {
11246             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?"));
11247             _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
11248             if (_res == NULL && PyErr_Occurred()) {
11249                 p->error_indicator = 1;
11250                 p->level--;
11251                 return NULL;
11252             }
11253             goto done;
11254         }
11255         p->mark = _mark;
11256         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
11257                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
11258     }
11259     { // lambda_param_with_default+ lambda_star_etc?
11260         if (p->error_indicator) {
11261             p->level--;
11262             return NULL;
11263         }
11264         D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
11265         asdl_seq * a;
11266         void *b;
11267         if (
11268             (a = _loop1_95_rule(p))  // lambda_param_with_default+
11269             &&
11270             (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
11271         )
11272         {
11273             D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
11274             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
11275             if (_res == NULL && PyErr_Occurred()) {
11276                 p->error_indicator = 1;
11277                 p->level--;
11278                 return NULL;
11279             }
11280             goto done;
11281         }
11282         p->mark = _mark;
11283         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
11284                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
11285     }
11286     { // lambda_star_etc
11287         if (p->error_indicator) {
11288             p->level--;
11289             return NULL;
11290         }
11291         D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
11292         StarEtc* a;
11293         if (
11294             (a = lambda_star_etc_rule(p))  // lambda_star_etc
11295         )
11296         {
11297             D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
11298             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
11299             if (_res == NULL && PyErr_Occurred()) {
11300                 p->error_indicator = 1;
11301                 p->level--;
11302                 return NULL;
11303             }
11304             goto done;
11305         }
11306         p->mark = _mark;
11307         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
11308                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
11309     }
11310     _res = NULL;
11311   done:
11312     p->level--;
11313     return _res;
11314 }
11315 
11316 // lambda_slash_no_default:
11317 //     | lambda_param_no_default+ '/' ','
11318 //     | lambda_param_no_default+ '/' &':'
11319 static asdl_arg_seq*
lambda_slash_no_default_rule(Parser * p)11320 lambda_slash_no_default_rule(Parser *p)
11321 {
11322     if (p->level++ == MAXSTACK) {
11323         p->error_indicator = 1;
11324         PyErr_NoMemory();
11325     }
11326     if (p->error_indicator) {
11327         p->level--;
11328         return NULL;
11329     }
11330     asdl_arg_seq* _res = NULL;
11331     int _mark = p->mark;
11332     { // lambda_param_no_default+ '/' ','
11333         if (p->error_indicator) {
11334             p->level--;
11335             return NULL;
11336         }
11337         D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
11338         Token * _literal;
11339         Token * _literal_1;
11340         asdl_arg_seq* a;
11341         if (
11342             (a = (asdl_arg_seq*)_loop1_96_rule(p))  // lambda_param_no_default+
11343             &&
11344             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
11345             &&
11346             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
11347         )
11348         {
11349             D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
11350             _res = a;
11351             if (_res == NULL && PyErr_Occurred()) {
11352                 p->error_indicator = 1;
11353                 p->level--;
11354                 return NULL;
11355             }
11356             goto done;
11357         }
11358         p->mark = _mark;
11359         D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
11360                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
11361     }
11362     { // lambda_param_no_default+ '/' &':'
11363         if (p->error_indicator) {
11364             p->level--;
11365             return NULL;
11366         }
11367         D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
11368         Token * _literal;
11369         asdl_arg_seq* a;
11370         if (
11371             (a = (asdl_arg_seq*)_loop1_97_rule(p))  // lambda_param_no_default+
11372             &&
11373             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
11374             &&
11375             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11376         )
11377         {
11378             D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
11379             _res = a;
11380             if (_res == NULL && PyErr_Occurred()) {
11381                 p->error_indicator = 1;
11382                 p->level--;
11383                 return NULL;
11384             }
11385             goto done;
11386         }
11387         p->mark = _mark;
11388         D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
11389                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
11390     }
11391     _res = NULL;
11392   done:
11393     p->level--;
11394     return _res;
11395 }
11396 
11397 // lambda_slash_with_default:
11398 //     | lambda_param_no_default* lambda_param_with_default+ '/' ','
11399 //     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
11400 static SlashWithDefault*
lambda_slash_with_default_rule(Parser * p)11401 lambda_slash_with_default_rule(Parser *p)
11402 {
11403     if (p->level++ == MAXSTACK) {
11404         p->error_indicator = 1;
11405         PyErr_NoMemory();
11406     }
11407     if (p->error_indicator) {
11408         p->level--;
11409         return NULL;
11410     }
11411     SlashWithDefault* _res = NULL;
11412     int _mark = p->mark;
11413     { // lambda_param_no_default* lambda_param_with_default+ '/' ','
11414         if (p->error_indicator) {
11415             p->level--;
11416             return NULL;
11417         }
11418         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+ '/' ','"));
11419         Token * _literal;
11420         Token * _literal_1;
11421         asdl_seq * a;
11422         asdl_seq * b;
11423         if (
11424             (a = _loop0_98_rule(p))  // lambda_param_no_default*
11425             &&
11426             (b = _loop1_99_rule(p))  // lambda_param_with_default+
11427             &&
11428             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
11429             &&
11430             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
11431         )
11432         {
11433             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+ '/' ','"));
11434             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq * ) a , b );
11435             if (_res == NULL && PyErr_Occurred()) {
11436                 p->error_indicator = 1;
11437                 p->level--;
11438                 return NULL;
11439             }
11440             goto done;
11441         }
11442         p->mark = _mark;
11443         D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
11444                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
11445     }
11446     { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
11447         if (p->error_indicator) {
11448             p->level--;
11449             return NULL;
11450         }
11451         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+ '/' &':'"));
11452         Token * _literal;
11453         asdl_seq * a;
11454         asdl_seq * b;
11455         if (
11456             (a = _loop0_100_rule(p))  // lambda_param_no_default*
11457             &&
11458             (b = _loop1_101_rule(p))  // lambda_param_with_default+
11459             &&
11460             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
11461             &&
11462             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11463         )
11464         {
11465             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+ '/' &':'"));
11466             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq * ) a , b );
11467             if (_res == NULL && PyErr_Occurred()) {
11468                 p->error_indicator = 1;
11469                 p->level--;
11470                 return NULL;
11471             }
11472             goto done;
11473         }
11474         p->mark = _mark;
11475         D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
11476                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
11477     }
11478     _res = NULL;
11479   done:
11480     p->level--;
11481     return _res;
11482 }
11483 
11484 // lambda_star_etc:
11485 //     | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
11486 //     | '*' ',' lambda_param_maybe_default+ lambda_kwds?
11487 //     | lambda_kwds
11488 //     | invalid_lambda_star_etc
11489 static StarEtc*
lambda_star_etc_rule(Parser * p)11490 lambda_star_etc_rule(Parser *p)
11491 {
11492     if (p->level++ == MAXSTACK) {
11493         p->error_indicator = 1;
11494         PyErr_NoMemory();
11495     }
11496     if (p->error_indicator) {
11497         p->level--;
11498         return NULL;
11499     }
11500     StarEtc* _res = NULL;
11501     int _mark = p->mark;
11502     { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
11503         if (p->error_indicator) {
11504             p->level--;
11505             return NULL;
11506         }
11507         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?"));
11508         Token * _literal;
11509         arg_ty a;
11510         asdl_seq * b;
11511         void *c;
11512         if (
11513             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11514             &&
11515             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
11516             &&
11517             (b = _loop0_102_rule(p))  // lambda_param_maybe_default*
11518             &&
11519             (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
11520         )
11521         {
11522             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?"));
11523             _res = _PyPegen_star_etc ( p , a , b , c );
11524             if (_res == NULL && PyErr_Occurred()) {
11525                 p->error_indicator = 1;
11526                 p->level--;
11527                 return NULL;
11528             }
11529             goto done;
11530         }
11531         p->mark = _mark;
11532         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
11533                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
11534     }
11535     { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
11536         if (p->error_indicator) {
11537             p->level--;
11538             return NULL;
11539         }
11540         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
11541         Token * _literal;
11542         Token * _literal_1;
11543         asdl_seq * b;
11544         void *c;
11545         if (
11546             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11547             &&
11548             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
11549             &&
11550             (b = _loop1_103_rule(p))  // lambda_param_maybe_default+
11551             &&
11552             (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
11553         )
11554         {
11555             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
11556             _res = _PyPegen_star_etc ( p , NULL , b , c );
11557             if (_res == NULL && PyErr_Occurred()) {
11558                 p->error_indicator = 1;
11559                 p->level--;
11560                 return NULL;
11561             }
11562             goto done;
11563         }
11564         p->mark = _mark;
11565         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
11566                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
11567     }
11568     { // lambda_kwds
11569         if (p->error_indicator) {
11570             p->level--;
11571             return NULL;
11572         }
11573         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
11574         arg_ty a;
11575         if (
11576             (a = lambda_kwds_rule(p))  // lambda_kwds
11577         )
11578         {
11579             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
11580             _res = _PyPegen_star_etc ( p , NULL , NULL , a );
11581             if (_res == NULL && PyErr_Occurred()) {
11582                 p->error_indicator = 1;
11583                 p->level--;
11584                 return NULL;
11585             }
11586             goto done;
11587         }
11588         p->mark = _mark;
11589         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
11590                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
11591     }
11592     if (p->call_invalid_rules) { // invalid_lambda_star_etc
11593         if (p->error_indicator) {
11594             p->level--;
11595             return NULL;
11596         }
11597         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
11598         void *invalid_lambda_star_etc_var;
11599         if (
11600             (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
11601         )
11602         {
11603             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
11604             _res = invalid_lambda_star_etc_var;
11605             goto done;
11606         }
11607         p->mark = _mark;
11608         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
11609                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
11610     }
11611     _res = NULL;
11612   done:
11613     p->level--;
11614     return _res;
11615 }
11616 
11617 // lambda_kwds: '**' lambda_param_no_default
11618 static arg_ty
lambda_kwds_rule(Parser * p)11619 lambda_kwds_rule(Parser *p)
11620 {
11621     if (p->level++ == MAXSTACK) {
11622         p->error_indicator = 1;
11623         PyErr_NoMemory();
11624     }
11625     if (p->error_indicator) {
11626         p->level--;
11627         return NULL;
11628     }
11629     arg_ty _res = NULL;
11630     int _mark = p->mark;
11631     { // '**' lambda_param_no_default
11632         if (p->error_indicator) {
11633             p->level--;
11634             return NULL;
11635         }
11636         D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
11637         Token * _literal;
11638         arg_ty a;
11639         if (
11640             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
11641             &&
11642             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
11643         )
11644         {
11645             D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
11646             _res = a;
11647             if (_res == NULL && PyErr_Occurred()) {
11648                 p->error_indicator = 1;
11649                 p->level--;
11650                 return NULL;
11651             }
11652             goto done;
11653         }
11654         p->mark = _mark;
11655         D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
11656                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
11657     }
11658     _res = NULL;
11659   done:
11660     p->level--;
11661     return _res;
11662 }
11663 
11664 // lambda_param_no_default: lambda_param ',' | lambda_param &':'
11665 static arg_ty
lambda_param_no_default_rule(Parser * p)11666 lambda_param_no_default_rule(Parser *p)
11667 {
11668     if (p->level++ == MAXSTACK) {
11669         p->error_indicator = 1;
11670         PyErr_NoMemory();
11671     }
11672     if (p->error_indicator) {
11673         p->level--;
11674         return NULL;
11675     }
11676     arg_ty _res = NULL;
11677     int _mark = p->mark;
11678     { // lambda_param ','
11679         if (p->error_indicator) {
11680             p->level--;
11681             return NULL;
11682         }
11683         D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
11684         Token * _literal;
11685         arg_ty a;
11686         if (
11687             (a = lambda_param_rule(p))  // lambda_param
11688             &&
11689             (_literal = _PyPegen_expect_token(p, 12))  // token=','
11690         )
11691         {
11692             D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
11693             _res = a;
11694             if (_res == NULL && PyErr_Occurred()) {
11695                 p->error_indicator = 1;
11696                 p->level--;
11697                 return NULL;
11698             }
11699             goto done;
11700         }
11701         p->mark = _mark;
11702         D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
11703                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
11704     }
11705     { // lambda_param &':'
11706         if (p->error_indicator) {
11707             p->level--;
11708             return NULL;
11709         }
11710         D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
11711         arg_ty a;
11712         if (
11713             (a = lambda_param_rule(p))  // lambda_param
11714             &&
11715             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11716         )
11717         {
11718             D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
11719             _res = a;
11720             if (_res == NULL && PyErr_Occurred()) {
11721                 p->error_indicator = 1;
11722                 p->level--;
11723                 return NULL;
11724             }
11725             goto done;
11726         }
11727         p->mark = _mark;
11728         D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
11729                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
11730     }
11731     _res = NULL;
11732   done:
11733     p->level--;
11734     return _res;
11735 }
11736 
11737 // lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
11738 static NameDefaultPair*
lambda_param_with_default_rule(Parser * p)11739 lambda_param_with_default_rule(Parser *p)
11740 {
11741     if (p->level++ == MAXSTACK) {
11742         p->error_indicator = 1;
11743         PyErr_NoMemory();
11744     }
11745     if (p->error_indicator) {
11746         p->level--;
11747         return NULL;
11748     }
11749     NameDefaultPair* _res = NULL;
11750     int _mark = p->mark;
11751     { // lambda_param default ','
11752         if (p->error_indicator) {
11753             p->level--;
11754             return NULL;
11755         }
11756         D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
11757         Token * _literal;
11758         arg_ty a;
11759         expr_ty c;
11760         if (
11761             (a = lambda_param_rule(p))  // lambda_param
11762             &&
11763             (c = default_rule(p))  // default
11764             &&
11765             (_literal = _PyPegen_expect_token(p, 12))  // token=','
11766         )
11767         {
11768             D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
11769             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
11770             if (_res == NULL && PyErr_Occurred()) {
11771                 p->error_indicator = 1;
11772                 p->level--;
11773                 return NULL;
11774             }
11775             goto done;
11776         }
11777         p->mark = _mark;
11778         D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
11779                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
11780     }
11781     { // lambda_param default &':'
11782         if (p->error_indicator) {
11783             p->level--;
11784             return NULL;
11785         }
11786         D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
11787         arg_ty a;
11788         expr_ty c;
11789         if (
11790             (a = lambda_param_rule(p))  // lambda_param
11791             &&
11792             (c = default_rule(p))  // default
11793             &&
11794             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11795         )
11796         {
11797             D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
11798             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
11799             if (_res == NULL && PyErr_Occurred()) {
11800                 p->error_indicator = 1;
11801                 p->level--;
11802                 return NULL;
11803             }
11804             goto done;
11805         }
11806         p->mark = _mark;
11807         D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
11808                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
11809     }
11810     _res = NULL;
11811   done:
11812     p->level--;
11813     return _res;
11814 }
11815 
11816 // lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
11817 static NameDefaultPair*
lambda_param_maybe_default_rule(Parser * p)11818 lambda_param_maybe_default_rule(Parser *p)
11819 {
11820     if (p->level++ == MAXSTACK) {
11821         p->error_indicator = 1;
11822         PyErr_NoMemory();
11823     }
11824     if (p->error_indicator) {
11825         p->level--;
11826         return NULL;
11827     }
11828     NameDefaultPair* _res = NULL;
11829     int _mark = p->mark;
11830     { // lambda_param default? ','
11831         if (p->error_indicator) {
11832             p->level--;
11833             return NULL;
11834         }
11835         D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
11836         Token * _literal;
11837         arg_ty a;
11838         void *c;
11839         if (
11840             (a = lambda_param_rule(p))  // lambda_param
11841             &&
11842             (c = default_rule(p), !p->error_indicator)  // default?
11843             &&
11844             (_literal = _PyPegen_expect_token(p, 12))  // token=','
11845         )
11846         {
11847             D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
11848             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
11849             if (_res == NULL && PyErr_Occurred()) {
11850                 p->error_indicator = 1;
11851                 p->level--;
11852                 return NULL;
11853             }
11854             goto done;
11855         }
11856         p->mark = _mark;
11857         D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
11858                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
11859     }
11860     { // lambda_param default? &':'
11861         if (p->error_indicator) {
11862             p->level--;
11863             return NULL;
11864         }
11865         D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
11866         arg_ty a;
11867         void *c;
11868         if (
11869             (a = lambda_param_rule(p))  // lambda_param
11870             &&
11871             (c = default_rule(p), !p->error_indicator)  // default?
11872             &&
11873             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11874         )
11875         {
11876             D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
11877             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
11878             if (_res == NULL && PyErr_Occurred()) {
11879                 p->error_indicator = 1;
11880                 p->level--;
11881                 return NULL;
11882             }
11883             goto done;
11884         }
11885         p->mark = _mark;
11886         D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
11887                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
11888     }
11889     _res = NULL;
11890   done:
11891     p->level--;
11892     return _res;
11893 }
11894 
11895 // lambda_param: NAME
11896 static arg_ty
lambda_param_rule(Parser * p)11897 lambda_param_rule(Parser *p)
11898 {
11899     if (p->level++ == MAXSTACK) {
11900         p->error_indicator = 1;
11901         PyErr_NoMemory();
11902     }
11903     if (p->error_indicator) {
11904         p->level--;
11905         return NULL;
11906     }
11907     arg_ty _res = NULL;
11908     int _mark = p->mark;
11909     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11910         p->error_indicator = 1;
11911         p->level--;
11912         return NULL;
11913     }
11914     int _start_lineno = p->tokens[_mark]->lineno;
11915     UNUSED(_start_lineno); // Only used by EXTRA macro
11916     int _start_col_offset = p->tokens[_mark]->col_offset;
11917     UNUSED(_start_col_offset); // Only used by EXTRA macro
11918     { // NAME
11919         if (p->error_indicator) {
11920             p->level--;
11921             return NULL;
11922         }
11923         D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
11924         expr_ty a;
11925         if (
11926             (a = _PyPegen_name_token(p))  // NAME
11927         )
11928         {
11929             D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
11930             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11931             if (_token == NULL) {
11932                 p->level--;
11933                 return NULL;
11934             }
11935             int _end_lineno = _token->end_lineno;
11936             UNUSED(_end_lineno); // Only used by EXTRA macro
11937             int _end_col_offset = _token->end_col_offset;
11938             UNUSED(_end_col_offset); // Only used by EXTRA macro
11939             _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
11940             if (_res == NULL && PyErr_Occurred()) {
11941                 p->error_indicator = 1;
11942                 p->level--;
11943                 return NULL;
11944             }
11945             goto done;
11946         }
11947         p->mark = _mark;
11948         D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
11949                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
11950     }
11951     _res = NULL;
11952   done:
11953     p->level--;
11954     return _res;
11955 }
11956 
11957 // disjunction: conjunction (('or' conjunction))+ | conjunction
11958 static expr_ty
disjunction_rule(Parser * p)11959 disjunction_rule(Parser *p)
11960 {
11961     if (p->level++ == MAXSTACK) {
11962         p->error_indicator = 1;
11963         PyErr_NoMemory();
11964     }
11965     if (p->error_indicator) {
11966         p->level--;
11967         return NULL;
11968     }
11969     expr_ty _res = NULL;
11970     if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
11971         p->level--;
11972         return _res;
11973     }
11974     int _mark = p->mark;
11975     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11976         p->error_indicator = 1;
11977         p->level--;
11978         return NULL;
11979     }
11980     int _start_lineno = p->tokens[_mark]->lineno;
11981     UNUSED(_start_lineno); // Only used by EXTRA macro
11982     int _start_col_offset = p->tokens[_mark]->col_offset;
11983     UNUSED(_start_col_offset); // Only used by EXTRA macro
11984     { // conjunction (('or' conjunction))+
11985         if (p->error_indicator) {
11986             p->level--;
11987             return NULL;
11988         }
11989         D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
11990         expr_ty a;
11991         asdl_seq * b;
11992         if (
11993             (a = conjunction_rule(p))  // conjunction
11994             &&
11995             (b = _loop1_104_rule(p))  // (('or' conjunction))+
11996         )
11997         {
11998             D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
11999             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12000             if (_token == NULL) {
12001                 p->level--;
12002                 return NULL;
12003             }
12004             int _end_lineno = _token->end_lineno;
12005             UNUSED(_end_lineno); // Only used by EXTRA macro
12006             int _end_col_offset = _token->end_col_offset;
12007             UNUSED(_end_col_offset); // Only used by EXTRA macro
12008             _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12009             if (_res == NULL && PyErr_Occurred()) {
12010                 p->error_indicator = 1;
12011                 p->level--;
12012                 return NULL;
12013             }
12014             goto done;
12015         }
12016         p->mark = _mark;
12017         D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12018                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
12019     }
12020     { // conjunction
12021         if (p->error_indicator) {
12022             p->level--;
12023             return NULL;
12024         }
12025         D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
12026         expr_ty conjunction_var;
12027         if (
12028             (conjunction_var = conjunction_rule(p))  // conjunction
12029         )
12030         {
12031             D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
12032             _res = conjunction_var;
12033             goto done;
12034         }
12035         p->mark = _mark;
12036         D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12037                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
12038     }
12039     _res = NULL;
12040   done:
12041     _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
12042     p->level--;
12043     return _res;
12044 }
12045 
12046 // conjunction: inversion (('and' inversion))+ | inversion
12047 static expr_ty
conjunction_rule(Parser * p)12048 conjunction_rule(Parser *p)
12049 {
12050     if (p->level++ == MAXSTACK) {
12051         p->error_indicator = 1;
12052         PyErr_NoMemory();
12053     }
12054     if (p->error_indicator) {
12055         p->level--;
12056         return NULL;
12057     }
12058     expr_ty _res = NULL;
12059     if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
12060         p->level--;
12061         return _res;
12062     }
12063     int _mark = p->mark;
12064     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12065         p->error_indicator = 1;
12066         p->level--;
12067         return NULL;
12068     }
12069     int _start_lineno = p->tokens[_mark]->lineno;
12070     UNUSED(_start_lineno); // Only used by EXTRA macro
12071     int _start_col_offset = p->tokens[_mark]->col_offset;
12072     UNUSED(_start_col_offset); // Only used by EXTRA macro
12073     { // inversion (('and' inversion))+
12074         if (p->error_indicator) {
12075             p->level--;
12076             return NULL;
12077         }
12078         D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12079         expr_ty a;
12080         asdl_seq * b;
12081         if (
12082             (a = inversion_rule(p))  // inversion
12083             &&
12084             (b = _loop1_105_rule(p))  // (('and' inversion))+
12085         )
12086         {
12087             D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12088             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12089             if (_token == NULL) {
12090                 p->level--;
12091                 return NULL;
12092             }
12093             int _end_lineno = _token->end_lineno;
12094             UNUSED(_end_lineno); // Only used by EXTRA macro
12095             int _end_col_offset = _token->end_col_offset;
12096             UNUSED(_end_col_offset); // Only used by EXTRA macro
12097             _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12098             if (_res == NULL && PyErr_Occurred()) {
12099                 p->error_indicator = 1;
12100                 p->level--;
12101                 return NULL;
12102             }
12103             goto done;
12104         }
12105         p->mark = _mark;
12106         D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12107                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
12108     }
12109     { // inversion
12110         if (p->error_indicator) {
12111             p->level--;
12112             return NULL;
12113         }
12114         D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
12115         expr_ty inversion_var;
12116         if (
12117             (inversion_var = inversion_rule(p))  // inversion
12118         )
12119         {
12120             D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
12121             _res = inversion_var;
12122             goto done;
12123         }
12124         p->mark = _mark;
12125         D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12126                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
12127     }
12128     _res = NULL;
12129   done:
12130     _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
12131     p->level--;
12132     return _res;
12133 }
12134 
12135 // inversion: 'not' inversion | comparison
12136 static expr_ty
inversion_rule(Parser * p)12137 inversion_rule(Parser *p)
12138 {
12139     if (p->level++ == MAXSTACK) {
12140         p->error_indicator = 1;
12141         PyErr_NoMemory();
12142     }
12143     if (p->error_indicator) {
12144         p->level--;
12145         return NULL;
12146     }
12147     expr_ty _res = NULL;
12148     if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
12149         p->level--;
12150         return _res;
12151     }
12152     int _mark = p->mark;
12153     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12154         p->error_indicator = 1;
12155         p->level--;
12156         return NULL;
12157     }
12158     int _start_lineno = p->tokens[_mark]->lineno;
12159     UNUSED(_start_lineno); // Only used by EXTRA macro
12160     int _start_col_offset = p->tokens[_mark]->col_offset;
12161     UNUSED(_start_col_offset); // Only used by EXTRA macro
12162     { // 'not' inversion
12163         if (p->error_indicator) {
12164             p->level--;
12165             return NULL;
12166         }
12167         D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12168         Token * _keyword;
12169         expr_ty a;
12170         if (
12171             (_keyword = _PyPegen_expect_token(p, 529))  // token='not'
12172             &&
12173             (a = inversion_rule(p))  // inversion
12174         )
12175         {
12176             D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12177             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12178             if (_token == NULL) {
12179                 p->level--;
12180                 return NULL;
12181             }
12182             int _end_lineno = _token->end_lineno;
12183             UNUSED(_end_lineno); // Only used by EXTRA macro
12184             int _end_col_offset = _token->end_col_offset;
12185             UNUSED(_end_col_offset); // Only used by EXTRA macro
12186             _res = _PyAST_UnaryOp ( Not , a , EXTRA );
12187             if (_res == NULL && PyErr_Occurred()) {
12188                 p->error_indicator = 1;
12189                 p->level--;
12190                 return NULL;
12191             }
12192             goto done;
12193         }
12194         p->mark = _mark;
12195         D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12196                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
12197     }
12198     { // comparison
12199         if (p->error_indicator) {
12200             p->level--;
12201             return NULL;
12202         }
12203         D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
12204         expr_ty comparison_var;
12205         if (
12206             (comparison_var = comparison_rule(p))  // comparison
12207         )
12208         {
12209             D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
12210             _res = comparison_var;
12211             goto done;
12212         }
12213         p->mark = _mark;
12214         D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12215                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
12216     }
12217     _res = NULL;
12218   done:
12219     _PyPegen_insert_memo(p, _mark, inversion_type, _res);
12220     p->level--;
12221     return _res;
12222 }
12223 
12224 // comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
12225 static expr_ty
comparison_rule(Parser * p)12226 comparison_rule(Parser *p)
12227 {
12228     if (p->level++ == MAXSTACK) {
12229         p->error_indicator = 1;
12230         PyErr_NoMemory();
12231     }
12232     if (p->error_indicator) {
12233         p->level--;
12234         return NULL;
12235     }
12236     expr_ty _res = NULL;
12237     int _mark = p->mark;
12238     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12239         p->error_indicator = 1;
12240         p->level--;
12241         return NULL;
12242     }
12243     int _start_lineno = p->tokens[_mark]->lineno;
12244     UNUSED(_start_lineno); // Only used by EXTRA macro
12245     int _start_col_offset = p->tokens[_mark]->col_offset;
12246     UNUSED(_start_col_offset); // Only used by EXTRA macro
12247     { // bitwise_or compare_op_bitwise_or_pair+
12248         if (p->error_indicator) {
12249             p->level--;
12250             return NULL;
12251         }
12252         D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12253         expr_ty a;
12254         asdl_seq * b;
12255         if (
12256             (a = bitwise_or_rule(p))  // bitwise_or
12257             &&
12258             (b = _loop1_106_rule(p))  // compare_op_bitwise_or_pair+
12259         )
12260         {
12261             D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12262             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12263             if (_token == NULL) {
12264                 p->level--;
12265                 return NULL;
12266             }
12267             int _end_lineno = _token->end_lineno;
12268             UNUSED(_end_lineno); // Only used by EXTRA macro
12269             int _end_col_offset = _token->end_col_offset;
12270             UNUSED(_end_col_offset); // Only used by EXTRA macro
12271             _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq * , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq * , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
12272             if (_res == NULL && PyErr_Occurred()) {
12273                 p->error_indicator = 1;
12274                 p->level--;
12275                 return NULL;
12276             }
12277             goto done;
12278         }
12279         p->mark = _mark;
12280         D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12281                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12282     }
12283     { // bitwise_or
12284         if (p->error_indicator) {
12285             p->level--;
12286             return NULL;
12287         }
12288         D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12289         expr_ty bitwise_or_var;
12290         if (
12291             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
12292         )
12293         {
12294             D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12295             _res = bitwise_or_var;
12296             goto done;
12297         }
12298         p->mark = _mark;
12299         D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12300                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
12301     }
12302     _res = NULL;
12303   done:
12304     p->level--;
12305     return _res;
12306 }
12307 
12308 // compare_op_bitwise_or_pair:
12309 //     | eq_bitwise_or
12310 //     | noteq_bitwise_or
12311 //     | lte_bitwise_or
12312 //     | lt_bitwise_or
12313 //     | gte_bitwise_or
12314 //     | gt_bitwise_or
12315 //     | notin_bitwise_or
12316 //     | in_bitwise_or
12317 //     | isnot_bitwise_or
12318 //     | is_bitwise_or
12319 static CmpopExprPair*
compare_op_bitwise_or_pair_rule(Parser * p)12320 compare_op_bitwise_or_pair_rule(Parser *p)
12321 {
12322     if (p->level++ == MAXSTACK) {
12323         p->error_indicator = 1;
12324         PyErr_NoMemory();
12325     }
12326     if (p->error_indicator) {
12327         p->level--;
12328         return NULL;
12329     }
12330     CmpopExprPair* _res = NULL;
12331     int _mark = p->mark;
12332     { // eq_bitwise_or
12333         if (p->error_indicator) {
12334             p->level--;
12335             return NULL;
12336         }
12337         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12338         CmpopExprPair* eq_bitwise_or_var;
12339         if (
12340             (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
12341         )
12342         {
12343             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12344             _res = eq_bitwise_or_var;
12345             goto done;
12346         }
12347         p->mark = _mark;
12348         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12349                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
12350     }
12351     { // noteq_bitwise_or
12352         if (p->error_indicator) {
12353             p->level--;
12354             return NULL;
12355         }
12356         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12357         CmpopExprPair* noteq_bitwise_or_var;
12358         if (
12359             (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
12360         )
12361         {
12362             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12363             _res = noteq_bitwise_or_var;
12364             goto done;
12365         }
12366         p->mark = _mark;
12367         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12368                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
12369     }
12370     { // lte_bitwise_or
12371         if (p->error_indicator) {
12372             p->level--;
12373             return NULL;
12374         }
12375         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12376         CmpopExprPair* lte_bitwise_or_var;
12377         if (
12378             (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
12379         )
12380         {
12381             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12382             _res = lte_bitwise_or_var;
12383             goto done;
12384         }
12385         p->mark = _mark;
12386         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12387                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
12388     }
12389     { // lt_bitwise_or
12390         if (p->error_indicator) {
12391             p->level--;
12392             return NULL;
12393         }
12394         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12395         CmpopExprPair* lt_bitwise_or_var;
12396         if (
12397             (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
12398         )
12399         {
12400             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12401             _res = lt_bitwise_or_var;
12402             goto done;
12403         }
12404         p->mark = _mark;
12405         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12406                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
12407     }
12408     { // gte_bitwise_or
12409         if (p->error_indicator) {
12410             p->level--;
12411             return NULL;
12412         }
12413         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12414         CmpopExprPair* gte_bitwise_or_var;
12415         if (
12416             (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
12417         )
12418         {
12419             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12420             _res = gte_bitwise_or_var;
12421             goto done;
12422         }
12423         p->mark = _mark;
12424         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12425                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
12426     }
12427     { // gt_bitwise_or
12428         if (p->error_indicator) {
12429             p->level--;
12430             return NULL;
12431         }
12432         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12433         CmpopExprPair* gt_bitwise_or_var;
12434         if (
12435             (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
12436         )
12437         {
12438             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12439             _res = gt_bitwise_or_var;
12440             goto done;
12441         }
12442         p->mark = _mark;
12443         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12444                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
12445     }
12446     { // notin_bitwise_or
12447         if (p->error_indicator) {
12448             p->level--;
12449             return NULL;
12450         }
12451         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12452         CmpopExprPair* notin_bitwise_or_var;
12453         if (
12454             (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
12455         )
12456         {
12457             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12458             _res = notin_bitwise_or_var;
12459             goto done;
12460         }
12461         p->mark = _mark;
12462         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12463                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
12464     }
12465     { // in_bitwise_or
12466         if (p->error_indicator) {
12467             p->level--;
12468             return NULL;
12469         }
12470         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12471         CmpopExprPair* in_bitwise_or_var;
12472         if (
12473             (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
12474         )
12475         {
12476             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12477             _res = in_bitwise_or_var;
12478             goto done;
12479         }
12480         p->mark = _mark;
12481         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12482                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
12483     }
12484     { // isnot_bitwise_or
12485         if (p->error_indicator) {
12486             p->level--;
12487             return NULL;
12488         }
12489         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12490         CmpopExprPair* isnot_bitwise_or_var;
12491         if (
12492             (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
12493         )
12494         {
12495             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12496             _res = isnot_bitwise_or_var;
12497             goto done;
12498         }
12499         p->mark = _mark;
12500         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12501                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
12502     }
12503     { // is_bitwise_or
12504         if (p->error_indicator) {
12505             p->level--;
12506             return NULL;
12507         }
12508         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12509         CmpopExprPair* is_bitwise_or_var;
12510         if (
12511             (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
12512         )
12513         {
12514             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12515             _res = is_bitwise_or_var;
12516             goto done;
12517         }
12518         p->mark = _mark;
12519         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12520                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
12521     }
12522     _res = NULL;
12523   done:
12524     p->level--;
12525     return _res;
12526 }
12527 
12528 // eq_bitwise_or: '==' bitwise_or
12529 static CmpopExprPair*
eq_bitwise_or_rule(Parser * p)12530 eq_bitwise_or_rule(Parser *p)
12531 {
12532     if (p->level++ == MAXSTACK) {
12533         p->error_indicator = 1;
12534         PyErr_NoMemory();
12535     }
12536     if (p->error_indicator) {
12537         p->level--;
12538         return NULL;
12539     }
12540     CmpopExprPair* _res = NULL;
12541     int _mark = p->mark;
12542     { // '==' bitwise_or
12543         if (p->error_indicator) {
12544             p->level--;
12545             return NULL;
12546         }
12547         D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12548         Token * _literal;
12549         expr_ty a;
12550         if (
12551             (_literal = _PyPegen_expect_token(p, 27))  // token='=='
12552             &&
12553             (a = bitwise_or_rule(p))  // bitwise_or
12554         )
12555         {
12556             D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12557             _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
12558             if (_res == NULL && PyErr_Occurred()) {
12559                 p->error_indicator = 1;
12560                 p->level--;
12561                 return NULL;
12562             }
12563             goto done;
12564         }
12565         p->mark = _mark;
12566         D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12567                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
12568     }
12569     _res = NULL;
12570   done:
12571     p->level--;
12572     return _res;
12573 }
12574 
12575 // noteq_bitwise_or: ('!=') bitwise_or
12576 static CmpopExprPair*
noteq_bitwise_or_rule(Parser * p)12577 noteq_bitwise_or_rule(Parser *p)
12578 {
12579     if (p->level++ == MAXSTACK) {
12580         p->error_indicator = 1;
12581         PyErr_NoMemory();
12582     }
12583     if (p->error_indicator) {
12584         p->level--;
12585         return NULL;
12586     }
12587     CmpopExprPair* _res = NULL;
12588     int _mark = p->mark;
12589     { // ('!=') bitwise_or
12590         if (p->error_indicator) {
12591             p->level--;
12592             return NULL;
12593         }
12594         D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12595         void *_tmp_107_var;
12596         expr_ty a;
12597         if (
12598             (_tmp_107_var = _tmp_107_rule(p))  // '!='
12599             &&
12600             (a = bitwise_or_rule(p))  // bitwise_or
12601         )
12602         {
12603             D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12604             _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
12605             if (_res == NULL && PyErr_Occurred()) {
12606                 p->error_indicator = 1;
12607                 p->level--;
12608                 return NULL;
12609             }
12610             goto done;
12611         }
12612         p->mark = _mark;
12613         D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12614                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
12615     }
12616     _res = NULL;
12617   done:
12618     p->level--;
12619     return _res;
12620 }
12621 
12622 // lte_bitwise_or: '<=' bitwise_or
12623 static CmpopExprPair*
lte_bitwise_or_rule(Parser * p)12624 lte_bitwise_or_rule(Parser *p)
12625 {
12626     if (p->level++ == MAXSTACK) {
12627         p->error_indicator = 1;
12628         PyErr_NoMemory();
12629     }
12630     if (p->error_indicator) {
12631         p->level--;
12632         return NULL;
12633     }
12634     CmpopExprPair* _res = NULL;
12635     int _mark = p->mark;
12636     { // '<=' bitwise_or
12637         if (p->error_indicator) {
12638             p->level--;
12639             return NULL;
12640         }
12641         D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12642         Token * _literal;
12643         expr_ty a;
12644         if (
12645             (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12646             &&
12647             (a = bitwise_or_rule(p))  // bitwise_or
12648         )
12649         {
12650             D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12651             _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12652             if (_res == NULL && PyErr_Occurred()) {
12653                 p->error_indicator = 1;
12654                 p->level--;
12655                 return NULL;
12656             }
12657             goto done;
12658         }
12659         p->mark = _mark;
12660         D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12661                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12662     }
12663     _res = NULL;
12664   done:
12665     p->level--;
12666     return _res;
12667 }
12668 
12669 // lt_bitwise_or: '<' bitwise_or
12670 static CmpopExprPair*
lt_bitwise_or_rule(Parser * p)12671 lt_bitwise_or_rule(Parser *p)
12672 {
12673     if (p->level++ == MAXSTACK) {
12674         p->error_indicator = 1;
12675         PyErr_NoMemory();
12676     }
12677     if (p->error_indicator) {
12678         p->level--;
12679         return NULL;
12680     }
12681     CmpopExprPair* _res = NULL;
12682     int _mark = p->mark;
12683     { // '<' bitwise_or
12684         if (p->error_indicator) {
12685             p->level--;
12686             return NULL;
12687         }
12688         D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12689         Token * _literal;
12690         expr_ty a;
12691         if (
12692             (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12693             &&
12694             (a = bitwise_or_rule(p))  // bitwise_or
12695         )
12696         {
12697             D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12698             _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12699             if (_res == NULL && PyErr_Occurred()) {
12700                 p->error_indicator = 1;
12701                 p->level--;
12702                 return NULL;
12703             }
12704             goto done;
12705         }
12706         p->mark = _mark;
12707         D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12708                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12709     }
12710     _res = NULL;
12711   done:
12712     p->level--;
12713     return _res;
12714 }
12715 
12716 // gte_bitwise_or: '>=' bitwise_or
12717 static CmpopExprPair*
gte_bitwise_or_rule(Parser * p)12718 gte_bitwise_or_rule(Parser *p)
12719 {
12720     if (p->level++ == MAXSTACK) {
12721         p->error_indicator = 1;
12722         PyErr_NoMemory();
12723     }
12724     if (p->error_indicator) {
12725         p->level--;
12726         return NULL;
12727     }
12728     CmpopExprPair* _res = NULL;
12729     int _mark = p->mark;
12730     { // '>=' bitwise_or
12731         if (p->error_indicator) {
12732             p->level--;
12733             return NULL;
12734         }
12735         D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12736         Token * _literal;
12737         expr_ty a;
12738         if (
12739             (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12740             &&
12741             (a = bitwise_or_rule(p))  // bitwise_or
12742         )
12743         {
12744             D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12745             _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12746             if (_res == NULL && PyErr_Occurred()) {
12747                 p->error_indicator = 1;
12748                 p->level--;
12749                 return NULL;
12750             }
12751             goto done;
12752         }
12753         p->mark = _mark;
12754         D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12755                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12756     }
12757     _res = NULL;
12758   done:
12759     p->level--;
12760     return _res;
12761 }
12762 
12763 // gt_bitwise_or: '>' bitwise_or
12764 static CmpopExprPair*
gt_bitwise_or_rule(Parser * p)12765 gt_bitwise_or_rule(Parser *p)
12766 {
12767     if (p->level++ == MAXSTACK) {
12768         p->error_indicator = 1;
12769         PyErr_NoMemory();
12770     }
12771     if (p->error_indicator) {
12772         p->level--;
12773         return NULL;
12774     }
12775     CmpopExprPair* _res = NULL;
12776     int _mark = p->mark;
12777     { // '>' bitwise_or
12778         if (p->error_indicator) {
12779             p->level--;
12780             return NULL;
12781         }
12782         D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12783         Token * _literal;
12784         expr_ty a;
12785         if (
12786             (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12787             &&
12788             (a = bitwise_or_rule(p))  // bitwise_or
12789         )
12790         {
12791             D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12792             _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12793             if (_res == NULL && PyErr_Occurred()) {
12794                 p->error_indicator = 1;
12795                 p->level--;
12796                 return NULL;
12797             }
12798             goto done;
12799         }
12800         p->mark = _mark;
12801         D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12802                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
12803     }
12804     _res = NULL;
12805   done:
12806     p->level--;
12807     return _res;
12808 }
12809 
12810 // notin_bitwise_or: 'not' 'in' bitwise_or
12811 static CmpopExprPair*
notin_bitwise_or_rule(Parser * p)12812 notin_bitwise_or_rule(Parser *p)
12813 {
12814     if (p->level++ == MAXSTACK) {
12815         p->error_indicator = 1;
12816         PyErr_NoMemory();
12817     }
12818     if (p->error_indicator) {
12819         p->level--;
12820         return NULL;
12821     }
12822     CmpopExprPair* _res = NULL;
12823     int _mark = p->mark;
12824     { // 'not' 'in' bitwise_or
12825         if (p->error_indicator) {
12826             p->level--;
12827             return NULL;
12828         }
12829         D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
12830         Token * _keyword;
12831         Token * _keyword_1;
12832         expr_ty a;
12833         if (
12834             (_keyword = _PyPegen_expect_token(p, 529))  // token='not'
12835             &&
12836             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
12837             &&
12838             (a = bitwise_or_rule(p))  // bitwise_or
12839         )
12840         {
12841             D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
12842             _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
12843             if (_res == NULL && PyErr_Occurred()) {
12844                 p->error_indicator = 1;
12845                 p->level--;
12846                 return NULL;
12847             }
12848             goto done;
12849         }
12850         p->mark = _mark;
12851         D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12852                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
12853     }
12854     _res = NULL;
12855   done:
12856     p->level--;
12857     return _res;
12858 }
12859 
12860 // in_bitwise_or: 'in' bitwise_or
12861 static CmpopExprPair*
in_bitwise_or_rule(Parser * p)12862 in_bitwise_or_rule(Parser *p)
12863 {
12864     if (p->level++ == MAXSTACK) {
12865         p->error_indicator = 1;
12866         PyErr_NoMemory();
12867     }
12868     if (p->error_indicator) {
12869         p->level--;
12870         return NULL;
12871     }
12872     CmpopExprPair* _res = NULL;
12873     int _mark = p->mark;
12874     { // 'in' bitwise_or
12875         if (p->error_indicator) {
12876             p->level--;
12877             return NULL;
12878         }
12879         D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
12880         Token * _keyword;
12881         expr_ty a;
12882         if (
12883             (_keyword = _PyPegen_expect_token(p, 518))  // token='in'
12884             &&
12885             (a = bitwise_or_rule(p))  // bitwise_or
12886         )
12887         {
12888             D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
12889             _res = _PyPegen_cmpop_expr_pair ( p , In , a );
12890             if (_res == NULL && PyErr_Occurred()) {
12891                 p->error_indicator = 1;
12892                 p->level--;
12893                 return NULL;
12894             }
12895             goto done;
12896         }
12897         p->mark = _mark;
12898         D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12899                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
12900     }
12901     _res = NULL;
12902   done:
12903     p->level--;
12904     return _res;
12905 }
12906 
12907 // isnot_bitwise_or: 'is' 'not' bitwise_or
12908 static CmpopExprPair*
isnot_bitwise_or_rule(Parser * p)12909 isnot_bitwise_or_rule(Parser *p)
12910 {
12911     if (p->level++ == MAXSTACK) {
12912         p->error_indicator = 1;
12913         PyErr_NoMemory();
12914     }
12915     if (p->error_indicator) {
12916         p->level--;
12917         return NULL;
12918     }
12919     CmpopExprPair* _res = NULL;
12920     int _mark = p->mark;
12921     { // 'is' 'not' bitwise_or
12922         if (p->error_indicator) {
12923             p->level--;
12924             return NULL;
12925         }
12926         D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
12927         Token * _keyword;
12928         Token * _keyword_1;
12929         expr_ty a;
12930         if (
12931             (_keyword = _PyPegen_expect_token(p, 530))  // token='is'
12932             &&
12933             (_keyword_1 = _PyPegen_expect_token(p, 529))  // token='not'
12934             &&
12935             (a = bitwise_or_rule(p))  // bitwise_or
12936         )
12937         {
12938             D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
12939             _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
12940             if (_res == NULL && PyErr_Occurred()) {
12941                 p->error_indicator = 1;
12942                 p->level--;
12943                 return NULL;
12944             }
12945             goto done;
12946         }
12947         p->mark = _mark;
12948         D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12949                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
12950     }
12951     _res = NULL;
12952   done:
12953     p->level--;
12954     return _res;
12955 }
12956 
12957 // is_bitwise_or: 'is' bitwise_or
12958 static CmpopExprPair*
is_bitwise_or_rule(Parser * p)12959 is_bitwise_or_rule(Parser *p)
12960 {
12961     if (p->level++ == MAXSTACK) {
12962         p->error_indicator = 1;
12963         PyErr_NoMemory();
12964     }
12965     if (p->error_indicator) {
12966         p->level--;
12967         return NULL;
12968     }
12969     CmpopExprPair* _res = NULL;
12970     int _mark = p->mark;
12971     { // 'is' bitwise_or
12972         if (p->error_indicator) {
12973             p->level--;
12974             return NULL;
12975         }
12976         D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
12977         Token * _keyword;
12978         expr_ty a;
12979         if (
12980             (_keyword = _PyPegen_expect_token(p, 530))  // token='is'
12981             &&
12982             (a = bitwise_or_rule(p))  // bitwise_or
12983         )
12984         {
12985             D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
12986             _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
12987             if (_res == NULL && PyErr_Occurred()) {
12988                 p->error_indicator = 1;
12989                 p->level--;
12990                 return NULL;
12991             }
12992             goto done;
12993         }
12994         p->mark = _mark;
12995         D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12996                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
12997     }
12998     _res = NULL;
12999   done:
13000     p->level--;
13001     return _res;
13002 }
13003 
13004 // Left-recursive
13005 // bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
13006 static expr_ty bitwise_or_raw(Parser *);
13007 static expr_ty
bitwise_or_rule(Parser * p)13008 bitwise_or_rule(Parser *p)
13009 {
13010     if (p->level++ == MAXSTACK) {
13011         p->error_indicator = 1;
13012         PyErr_NoMemory();
13013     }
13014     expr_ty _res = NULL;
13015     if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
13016         p->level--;
13017         return _res;
13018     }
13019     int _mark = p->mark;
13020     int _resmark = p->mark;
13021     while (1) {
13022         int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
13023         if (tmpvar_2) {
13024             p->level--;
13025             return _res;
13026         }
13027         p->mark = _mark;
13028         p->in_raw_rule++;
13029         void *_raw = bitwise_or_raw(p);
13030         p->in_raw_rule--;
13031         if (p->error_indicator) {
13032             p->level--;
13033             return NULL;
13034         }
13035         if (_raw == NULL || p->mark <= _resmark)
13036             break;
13037         _resmark = p->mark;
13038         _res = _raw;
13039     }
13040     p->mark = _resmark;
13041     p->level--;
13042     return _res;
13043 }
13044 static expr_ty
bitwise_or_raw(Parser * p)13045 bitwise_or_raw(Parser *p)
13046 {
13047     if (p->level++ == MAXSTACK) {
13048         p->error_indicator = 1;
13049         PyErr_NoMemory();
13050     }
13051     if (p->error_indicator) {
13052         p->level--;
13053         return NULL;
13054     }
13055     expr_ty _res = NULL;
13056     int _mark = p->mark;
13057     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13058         p->error_indicator = 1;
13059         p->level--;
13060         return NULL;
13061     }
13062     int _start_lineno = p->tokens[_mark]->lineno;
13063     UNUSED(_start_lineno); // Only used by EXTRA macro
13064     int _start_col_offset = p->tokens[_mark]->col_offset;
13065     UNUSED(_start_col_offset); // Only used by EXTRA macro
13066     { // bitwise_or '|' bitwise_xor
13067         if (p->error_indicator) {
13068             p->level--;
13069             return NULL;
13070         }
13071         D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13072         Token * _literal;
13073         expr_ty a;
13074         expr_ty b;
13075         if (
13076             (a = bitwise_or_rule(p))  // bitwise_or
13077             &&
13078             (_literal = _PyPegen_expect_token(p, 18))  // token='|'
13079             &&
13080             (b = bitwise_xor_rule(p))  // bitwise_xor
13081         )
13082         {
13083             D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13084             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13085             if (_token == NULL) {
13086                 p->level--;
13087                 return NULL;
13088             }
13089             int _end_lineno = _token->end_lineno;
13090             UNUSED(_end_lineno); // Only used by EXTRA macro
13091             int _end_col_offset = _token->end_col_offset;
13092             UNUSED(_end_col_offset); // Only used by EXTRA macro
13093             _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
13094             if (_res == NULL && PyErr_Occurred()) {
13095                 p->error_indicator = 1;
13096                 p->level--;
13097                 return NULL;
13098             }
13099             goto done;
13100         }
13101         p->mark = _mark;
13102         D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13103                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13104     }
13105     { // bitwise_xor
13106         if (p->error_indicator) {
13107             p->level--;
13108             return NULL;
13109         }
13110         D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13111         expr_ty bitwise_xor_var;
13112         if (
13113             (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
13114         )
13115         {
13116             D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13117             _res = bitwise_xor_var;
13118             goto done;
13119         }
13120         p->mark = _mark;
13121         D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13122                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
13123     }
13124     _res = NULL;
13125   done:
13126     p->level--;
13127     return _res;
13128 }
13129 
13130 // Left-recursive
13131 // bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
13132 static expr_ty bitwise_xor_raw(Parser *);
13133 static expr_ty
bitwise_xor_rule(Parser * p)13134 bitwise_xor_rule(Parser *p)
13135 {
13136     if (p->level++ == MAXSTACK) {
13137         p->error_indicator = 1;
13138         PyErr_NoMemory();
13139     }
13140     expr_ty _res = NULL;
13141     if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
13142         p->level--;
13143         return _res;
13144     }
13145     int _mark = p->mark;
13146     int _resmark = p->mark;
13147     while (1) {
13148         int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
13149         if (tmpvar_3) {
13150             p->level--;
13151             return _res;
13152         }
13153         p->mark = _mark;
13154         p->in_raw_rule++;
13155         void *_raw = bitwise_xor_raw(p);
13156         p->in_raw_rule--;
13157         if (p->error_indicator) {
13158             p->level--;
13159             return NULL;
13160         }
13161         if (_raw == NULL || p->mark <= _resmark)
13162             break;
13163         _resmark = p->mark;
13164         _res = _raw;
13165     }
13166     p->mark = _resmark;
13167     p->level--;
13168     return _res;
13169 }
13170 static expr_ty
bitwise_xor_raw(Parser * p)13171 bitwise_xor_raw(Parser *p)
13172 {
13173     if (p->level++ == MAXSTACK) {
13174         p->error_indicator = 1;
13175         PyErr_NoMemory();
13176     }
13177     if (p->error_indicator) {
13178         p->level--;
13179         return NULL;
13180     }
13181     expr_ty _res = NULL;
13182     int _mark = p->mark;
13183     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13184         p->error_indicator = 1;
13185         p->level--;
13186         return NULL;
13187     }
13188     int _start_lineno = p->tokens[_mark]->lineno;
13189     UNUSED(_start_lineno); // Only used by EXTRA macro
13190     int _start_col_offset = p->tokens[_mark]->col_offset;
13191     UNUSED(_start_col_offset); // Only used by EXTRA macro
13192     { // bitwise_xor '^' bitwise_and
13193         if (p->error_indicator) {
13194             p->level--;
13195             return NULL;
13196         }
13197         D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13198         Token * _literal;
13199         expr_ty a;
13200         expr_ty b;
13201         if (
13202             (a = bitwise_xor_rule(p))  // bitwise_xor
13203             &&
13204             (_literal = _PyPegen_expect_token(p, 32))  // token='^'
13205             &&
13206             (b = bitwise_and_rule(p))  // bitwise_and
13207         )
13208         {
13209             D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13210             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13211             if (_token == NULL) {
13212                 p->level--;
13213                 return NULL;
13214             }
13215             int _end_lineno = _token->end_lineno;
13216             UNUSED(_end_lineno); // Only used by EXTRA macro
13217             int _end_col_offset = _token->end_col_offset;
13218             UNUSED(_end_col_offset); // Only used by EXTRA macro
13219             _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
13220             if (_res == NULL && PyErr_Occurred()) {
13221                 p->error_indicator = 1;
13222                 p->level--;
13223                 return NULL;
13224             }
13225             goto done;
13226         }
13227         p->mark = _mark;
13228         D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13229                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13230     }
13231     { // bitwise_and
13232         if (p->error_indicator) {
13233             p->level--;
13234             return NULL;
13235         }
13236         D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13237         expr_ty bitwise_and_var;
13238         if (
13239             (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
13240         )
13241         {
13242             D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13243             _res = bitwise_and_var;
13244             goto done;
13245         }
13246         p->mark = _mark;
13247         D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13248                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
13249     }
13250     _res = NULL;
13251   done:
13252     p->level--;
13253     return _res;
13254 }
13255 
13256 // Left-recursive
13257 // bitwise_and: bitwise_and '&' shift_expr | shift_expr
13258 static expr_ty bitwise_and_raw(Parser *);
13259 static expr_ty
bitwise_and_rule(Parser * p)13260 bitwise_and_rule(Parser *p)
13261 {
13262     if (p->level++ == MAXSTACK) {
13263         p->error_indicator = 1;
13264         PyErr_NoMemory();
13265     }
13266     expr_ty _res = NULL;
13267     if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
13268         p->level--;
13269         return _res;
13270     }
13271     int _mark = p->mark;
13272     int _resmark = p->mark;
13273     while (1) {
13274         int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
13275         if (tmpvar_4) {
13276             p->level--;
13277             return _res;
13278         }
13279         p->mark = _mark;
13280         p->in_raw_rule++;
13281         void *_raw = bitwise_and_raw(p);
13282         p->in_raw_rule--;
13283         if (p->error_indicator) {
13284             p->level--;
13285             return NULL;
13286         }
13287         if (_raw == NULL || p->mark <= _resmark)
13288             break;
13289         _resmark = p->mark;
13290         _res = _raw;
13291     }
13292     p->mark = _resmark;
13293     p->level--;
13294     return _res;
13295 }
13296 static expr_ty
bitwise_and_raw(Parser * p)13297 bitwise_and_raw(Parser *p)
13298 {
13299     if (p->level++ == MAXSTACK) {
13300         p->error_indicator = 1;
13301         PyErr_NoMemory();
13302     }
13303     if (p->error_indicator) {
13304         p->level--;
13305         return NULL;
13306     }
13307     expr_ty _res = NULL;
13308     int _mark = p->mark;
13309     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13310         p->error_indicator = 1;
13311         p->level--;
13312         return NULL;
13313     }
13314     int _start_lineno = p->tokens[_mark]->lineno;
13315     UNUSED(_start_lineno); // Only used by EXTRA macro
13316     int _start_col_offset = p->tokens[_mark]->col_offset;
13317     UNUSED(_start_col_offset); // Only used by EXTRA macro
13318     { // bitwise_and '&' shift_expr
13319         if (p->error_indicator) {
13320             p->level--;
13321             return NULL;
13322         }
13323         D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13324         Token * _literal;
13325         expr_ty a;
13326         expr_ty b;
13327         if (
13328             (a = bitwise_and_rule(p))  // bitwise_and
13329             &&
13330             (_literal = _PyPegen_expect_token(p, 19))  // token='&'
13331             &&
13332             (b = shift_expr_rule(p))  // shift_expr
13333         )
13334         {
13335             D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13336             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13337             if (_token == NULL) {
13338                 p->level--;
13339                 return NULL;
13340             }
13341             int _end_lineno = _token->end_lineno;
13342             UNUSED(_end_lineno); // Only used by EXTRA macro
13343             int _end_col_offset = _token->end_col_offset;
13344             UNUSED(_end_col_offset); // Only used by EXTRA macro
13345             _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
13346             if (_res == NULL && PyErr_Occurred()) {
13347                 p->error_indicator = 1;
13348                 p->level--;
13349                 return NULL;
13350             }
13351             goto done;
13352         }
13353         p->mark = _mark;
13354         D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13355                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
13356     }
13357     { // shift_expr
13358         if (p->error_indicator) {
13359             p->level--;
13360             return NULL;
13361         }
13362         D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13363         expr_ty shift_expr_var;
13364         if (
13365             (shift_expr_var = shift_expr_rule(p))  // shift_expr
13366         )
13367         {
13368             D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13369             _res = shift_expr_var;
13370             goto done;
13371         }
13372         p->mark = _mark;
13373         D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13374                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
13375     }
13376     _res = NULL;
13377   done:
13378     p->level--;
13379     return _res;
13380 }
13381 
13382 // Left-recursive
13383 // shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
13384 static expr_ty shift_expr_raw(Parser *);
13385 static expr_ty
shift_expr_rule(Parser * p)13386 shift_expr_rule(Parser *p)
13387 {
13388     if (p->level++ == MAXSTACK) {
13389         p->error_indicator = 1;
13390         PyErr_NoMemory();
13391     }
13392     expr_ty _res = NULL;
13393     if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
13394         p->level--;
13395         return _res;
13396     }
13397     int _mark = p->mark;
13398     int _resmark = p->mark;
13399     while (1) {
13400         int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
13401         if (tmpvar_5) {
13402             p->level--;
13403             return _res;
13404         }
13405         p->mark = _mark;
13406         p->in_raw_rule++;
13407         void *_raw = shift_expr_raw(p);
13408         p->in_raw_rule--;
13409         if (p->error_indicator) {
13410             p->level--;
13411             return NULL;
13412         }
13413         if (_raw == NULL || p->mark <= _resmark)
13414             break;
13415         _resmark = p->mark;
13416         _res = _raw;
13417     }
13418     p->mark = _resmark;
13419     p->level--;
13420     return _res;
13421 }
13422 static expr_ty
shift_expr_raw(Parser * p)13423 shift_expr_raw(Parser *p)
13424 {
13425     if (p->level++ == MAXSTACK) {
13426         p->error_indicator = 1;
13427         PyErr_NoMemory();
13428     }
13429     if (p->error_indicator) {
13430         p->level--;
13431         return NULL;
13432     }
13433     expr_ty _res = NULL;
13434     int _mark = p->mark;
13435     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13436         p->error_indicator = 1;
13437         p->level--;
13438         return NULL;
13439     }
13440     int _start_lineno = p->tokens[_mark]->lineno;
13441     UNUSED(_start_lineno); // Only used by EXTRA macro
13442     int _start_col_offset = p->tokens[_mark]->col_offset;
13443     UNUSED(_start_col_offset); // Only used by EXTRA macro
13444     { // shift_expr '<<' sum
13445         if (p->error_indicator) {
13446             p->level--;
13447             return NULL;
13448         }
13449         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13450         Token * _literal;
13451         expr_ty a;
13452         expr_ty b;
13453         if (
13454             (a = shift_expr_rule(p))  // shift_expr
13455             &&
13456             (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
13457             &&
13458             (b = sum_rule(p))  // sum
13459         )
13460         {
13461             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13462             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13463             if (_token == NULL) {
13464                 p->level--;
13465                 return NULL;
13466             }
13467             int _end_lineno = _token->end_lineno;
13468             UNUSED(_end_lineno); // Only used by EXTRA macro
13469             int _end_col_offset = _token->end_col_offset;
13470             UNUSED(_end_col_offset); // Only used by EXTRA macro
13471             _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
13472             if (_res == NULL && PyErr_Occurred()) {
13473                 p->error_indicator = 1;
13474                 p->level--;
13475                 return NULL;
13476             }
13477             goto done;
13478         }
13479         p->mark = _mark;
13480         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13481                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
13482     }
13483     { // shift_expr '>>' sum
13484         if (p->error_indicator) {
13485             p->level--;
13486             return NULL;
13487         }
13488         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13489         Token * _literal;
13490         expr_ty a;
13491         expr_ty b;
13492         if (
13493             (a = shift_expr_rule(p))  // shift_expr
13494             &&
13495             (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
13496             &&
13497             (b = sum_rule(p))  // sum
13498         )
13499         {
13500             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13501             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13502             if (_token == NULL) {
13503                 p->level--;
13504                 return NULL;
13505             }
13506             int _end_lineno = _token->end_lineno;
13507             UNUSED(_end_lineno); // Only used by EXTRA macro
13508             int _end_col_offset = _token->end_col_offset;
13509             UNUSED(_end_col_offset); // Only used by EXTRA macro
13510             _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
13511             if (_res == NULL && PyErr_Occurred()) {
13512                 p->error_indicator = 1;
13513                 p->level--;
13514                 return NULL;
13515             }
13516             goto done;
13517         }
13518         p->mark = _mark;
13519         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13520                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
13521     }
13522     { // sum
13523         if (p->error_indicator) {
13524             p->level--;
13525             return NULL;
13526         }
13527         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
13528         expr_ty sum_var;
13529         if (
13530             (sum_var = sum_rule(p))  // sum
13531         )
13532         {
13533             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
13534             _res = sum_var;
13535             goto done;
13536         }
13537         p->mark = _mark;
13538         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13539                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
13540     }
13541     _res = NULL;
13542   done:
13543     p->level--;
13544     return _res;
13545 }
13546 
13547 // Left-recursive
13548 // sum: sum '+' term | sum '-' term | term
13549 static expr_ty sum_raw(Parser *);
13550 static expr_ty
sum_rule(Parser * p)13551 sum_rule(Parser *p)
13552 {
13553     if (p->level++ == MAXSTACK) {
13554         p->error_indicator = 1;
13555         PyErr_NoMemory();
13556     }
13557     expr_ty _res = NULL;
13558     if (_PyPegen_is_memoized(p, sum_type, &_res)) {
13559         p->level--;
13560         return _res;
13561     }
13562     int _mark = p->mark;
13563     int _resmark = p->mark;
13564     while (1) {
13565         int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
13566         if (tmpvar_6) {
13567             p->level--;
13568             return _res;
13569         }
13570         p->mark = _mark;
13571         p->in_raw_rule++;
13572         void *_raw = sum_raw(p);
13573         p->in_raw_rule--;
13574         if (p->error_indicator) {
13575             p->level--;
13576             return NULL;
13577         }
13578         if (_raw == NULL || p->mark <= _resmark)
13579             break;
13580         _resmark = p->mark;
13581         _res = _raw;
13582     }
13583     p->mark = _resmark;
13584     p->level--;
13585     return _res;
13586 }
13587 static expr_ty
sum_raw(Parser * p)13588 sum_raw(Parser *p)
13589 {
13590     if (p->level++ == MAXSTACK) {
13591         p->error_indicator = 1;
13592         PyErr_NoMemory();
13593     }
13594     if (p->error_indicator) {
13595         p->level--;
13596         return NULL;
13597     }
13598     expr_ty _res = NULL;
13599     int _mark = p->mark;
13600     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13601         p->error_indicator = 1;
13602         p->level--;
13603         return NULL;
13604     }
13605     int _start_lineno = p->tokens[_mark]->lineno;
13606     UNUSED(_start_lineno); // Only used by EXTRA macro
13607     int _start_col_offset = p->tokens[_mark]->col_offset;
13608     UNUSED(_start_col_offset); // Only used by EXTRA macro
13609     { // sum '+' term
13610         if (p->error_indicator) {
13611             p->level--;
13612             return NULL;
13613         }
13614         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13615         Token * _literal;
13616         expr_ty a;
13617         expr_ty b;
13618         if (
13619             (a = sum_rule(p))  // sum
13620             &&
13621             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13622             &&
13623             (b = term_rule(p))  // term
13624         )
13625         {
13626             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13627             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13628             if (_token == NULL) {
13629                 p->level--;
13630                 return NULL;
13631             }
13632             int _end_lineno = _token->end_lineno;
13633             UNUSED(_end_lineno); // Only used by EXTRA macro
13634             int _end_col_offset = _token->end_col_offset;
13635             UNUSED(_end_col_offset); // Only used by EXTRA macro
13636             _res = _PyAST_BinOp ( a , Add , b , EXTRA );
13637             if (_res == NULL && PyErr_Occurred()) {
13638                 p->error_indicator = 1;
13639                 p->level--;
13640                 return NULL;
13641             }
13642             goto done;
13643         }
13644         p->mark = _mark;
13645         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13646                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13647     }
13648     { // sum '-' term
13649         if (p->error_indicator) {
13650             p->level--;
13651             return NULL;
13652         }
13653         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13654         Token * _literal;
13655         expr_ty a;
13656         expr_ty b;
13657         if (
13658             (a = sum_rule(p))  // sum
13659             &&
13660             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13661             &&
13662             (b = term_rule(p))  // term
13663         )
13664         {
13665             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13666             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13667             if (_token == NULL) {
13668                 p->level--;
13669                 return NULL;
13670             }
13671             int _end_lineno = _token->end_lineno;
13672             UNUSED(_end_lineno); // Only used by EXTRA macro
13673             int _end_col_offset = _token->end_col_offset;
13674             UNUSED(_end_col_offset); // Only used by EXTRA macro
13675             _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13676             if (_res == NULL && PyErr_Occurred()) {
13677                 p->error_indicator = 1;
13678                 p->level--;
13679                 return NULL;
13680             }
13681             goto done;
13682         }
13683         p->mark = _mark;
13684         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13685                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13686     }
13687     { // term
13688         if (p->error_indicator) {
13689             p->level--;
13690             return NULL;
13691         }
13692         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13693         expr_ty term_var;
13694         if (
13695             (term_var = term_rule(p))  // term
13696         )
13697         {
13698             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13699             _res = term_var;
13700             goto done;
13701         }
13702         p->mark = _mark;
13703         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13704                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13705     }
13706     _res = NULL;
13707   done:
13708     p->level--;
13709     return _res;
13710 }
13711 
13712 // Left-recursive
13713 // term:
13714 //     | term '*' factor
13715 //     | term '/' factor
13716 //     | term '//' factor
13717 //     | term '%' factor
13718 //     | term '@' factor
13719 //     | factor
13720 static expr_ty term_raw(Parser *);
13721 static expr_ty
term_rule(Parser * p)13722 term_rule(Parser *p)
13723 {
13724     if (p->level++ == MAXSTACK) {
13725         p->error_indicator = 1;
13726         PyErr_NoMemory();
13727     }
13728     expr_ty _res = NULL;
13729     if (_PyPegen_is_memoized(p, term_type, &_res)) {
13730         p->level--;
13731         return _res;
13732     }
13733     int _mark = p->mark;
13734     int _resmark = p->mark;
13735     while (1) {
13736         int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
13737         if (tmpvar_7) {
13738             p->level--;
13739             return _res;
13740         }
13741         p->mark = _mark;
13742         p->in_raw_rule++;
13743         void *_raw = term_raw(p);
13744         p->in_raw_rule--;
13745         if (p->error_indicator) {
13746             p->level--;
13747             return NULL;
13748         }
13749         if (_raw == NULL || p->mark <= _resmark)
13750             break;
13751         _resmark = p->mark;
13752         _res = _raw;
13753     }
13754     p->mark = _resmark;
13755     p->level--;
13756     return _res;
13757 }
13758 static expr_ty
term_raw(Parser * p)13759 term_raw(Parser *p)
13760 {
13761     if (p->level++ == MAXSTACK) {
13762         p->error_indicator = 1;
13763         PyErr_NoMemory();
13764     }
13765     if (p->error_indicator) {
13766         p->level--;
13767         return NULL;
13768     }
13769     expr_ty _res = NULL;
13770     int _mark = p->mark;
13771     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13772         p->error_indicator = 1;
13773         p->level--;
13774         return NULL;
13775     }
13776     int _start_lineno = p->tokens[_mark]->lineno;
13777     UNUSED(_start_lineno); // Only used by EXTRA macro
13778     int _start_col_offset = p->tokens[_mark]->col_offset;
13779     UNUSED(_start_col_offset); // Only used by EXTRA macro
13780     { // term '*' factor
13781         if (p->error_indicator) {
13782             p->level--;
13783             return NULL;
13784         }
13785         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13786         Token * _literal;
13787         expr_ty a;
13788         expr_ty b;
13789         if (
13790             (a = term_rule(p))  // term
13791             &&
13792             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13793             &&
13794             (b = factor_rule(p))  // factor
13795         )
13796         {
13797             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13798             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13799             if (_token == NULL) {
13800                 p->level--;
13801                 return NULL;
13802             }
13803             int _end_lineno = _token->end_lineno;
13804             UNUSED(_end_lineno); // Only used by EXTRA macro
13805             int _end_col_offset = _token->end_col_offset;
13806             UNUSED(_end_col_offset); // Only used by EXTRA macro
13807             _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
13808             if (_res == NULL && PyErr_Occurred()) {
13809                 p->error_indicator = 1;
13810                 p->level--;
13811                 return NULL;
13812             }
13813             goto done;
13814         }
13815         p->mark = _mark;
13816         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13817                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
13818     }
13819     { // term '/' factor
13820         if (p->error_indicator) {
13821             p->level--;
13822             return NULL;
13823         }
13824         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13825         Token * _literal;
13826         expr_ty a;
13827         expr_ty b;
13828         if (
13829             (a = term_rule(p))  // term
13830             &&
13831             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
13832             &&
13833             (b = factor_rule(p))  // factor
13834         )
13835         {
13836             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13837             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13838             if (_token == NULL) {
13839                 p->level--;
13840                 return NULL;
13841             }
13842             int _end_lineno = _token->end_lineno;
13843             UNUSED(_end_lineno); // Only used by EXTRA macro
13844             int _end_col_offset = _token->end_col_offset;
13845             UNUSED(_end_col_offset); // Only used by EXTRA macro
13846             _res = _PyAST_BinOp ( a , Div , b , EXTRA );
13847             if (_res == NULL && PyErr_Occurred()) {
13848                 p->error_indicator = 1;
13849                 p->level--;
13850                 return NULL;
13851             }
13852             goto done;
13853         }
13854         p->mark = _mark;
13855         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13856                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
13857     }
13858     { // term '//' factor
13859         if (p->error_indicator) {
13860             p->level--;
13861             return NULL;
13862         }
13863         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
13864         Token * _literal;
13865         expr_ty a;
13866         expr_ty b;
13867         if (
13868             (a = term_rule(p))  // term
13869             &&
13870             (_literal = _PyPegen_expect_token(p, 47))  // token='//'
13871             &&
13872             (b = factor_rule(p))  // factor
13873         )
13874         {
13875             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
13876             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13877             if (_token == NULL) {
13878                 p->level--;
13879                 return NULL;
13880             }
13881             int _end_lineno = _token->end_lineno;
13882             UNUSED(_end_lineno); // Only used by EXTRA macro
13883             int _end_col_offset = _token->end_col_offset;
13884             UNUSED(_end_col_offset); // Only used by EXTRA macro
13885             _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
13886             if (_res == NULL && PyErr_Occurred()) {
13887                 p->error_indicator = 1;
13888                 p->level--;
13889                 return NULL;
13890             }
13891             goto done;
13892         }
13893         p->mark = _mark;
13894         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13895                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
13896     }
13897     { // term '%' factor
13898         if (p->error_indicator) {
13899             p->level--;
13900             return NULL;
13901         }
13902         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
13903         Token * _literal;
13904         expr_ty a;
13905         expr_ty b;
13906         if (
13907             (a = term_rule(p))  // term
13908             &&
13909             (_literal = _PyPegen_expect_token(p, 24))  // token='%'
13910             &&
13911             (b = factor_rule(p))  // factor
13912         )
13913         {
13914             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
13915             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13916             if (_token == NULL) {
13917                 p->level--;
13918                 return NULL;
13919             }
13920             int _end_lineno = _token->end_lineno;
13921             UNUSED(_end_lineno); // Only used by EXTRA macro
13922             int _end_col_offset = _token->end_col_offset;
13923             UNUSED(_end_col_offset); // Only used by EXTRA macro
13924             _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
13925             if (_res == NULL && PyErr_Occurred()) {
13926                 p->error_indicator = 1;
13927                 p->level--;
13928                 return NULL;
13929             }
13930             goto done;
13931         }
13932         p->mark = _mark;
13933         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13934                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
13935     }
13936     { // term '@' factor
13937         if (p->error_indicator) {
13938             p->level--;
13939             return NULL;
13940         }
13941         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
13942         Token * _literal;
13943         expr_ty a;
13944         expr_ty b;
13945         if (
13946             (a = term_rule(p))  // term
13947             &&
13948             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
13949             &&
13950             (b = factor_rule(p))  // factor
13951         )
13952         {
13953             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
13954             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13955             if (_token == NULL) {
13956                 p->level--;
13957                 return NULL;
13958             }
13959             int _end_lineno = _token->end_lineno;
13960             UNUSED(_end_lineno); // Only used by EXTRA macro
13961             int _end_col_offset = _token->end_col_offset;
13962             UNUSED(_end_col_offset); // Only used by EXTRA macro
13963             _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
13964             if (_res == NULL && PyErr_Occurred()) {
13965                 p->error_indicator = 1;
13966                 p->level--;
13967                 return NULL;
13968             }
13969             goto done;
13970         }
13971         p->mark = _mark;
13972         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13973                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
13974     }
13975     { // factor
13976         if (p->error_indicator) {
13977             p->level--;
13978             return NULL;
13979         }
13980         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
13981         expr_ty factor_var;
13982         if (
13983             (factor_var = factor_rule(p))  // factor
13984         )
13985         {
13986             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
13987             _res = factor_var;
13988             goto done;
13989         }
13990         p->mark = _mark;
13991         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13992                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
13993     }
13994     _res = NULL;
13995   done:
13996     p->level--;
13997     return _res;
13998 }
13999 
14000 // factor: '+' factor | '-' factor | '~' factor | power
14001 static expr_ty
factor_rule(Parser * p)14002 factor_rule(Parser *p)
14003 {
14004     if (p->level++ == MAXSTACK) {
14005         p->error_indicator = 1;
14006         PyErr_NoMemory();
14007     }
14008     if (p->error_indicator) {
14009         p->level--;
14010         return NULL;
14011     }
14012     expr_ty _res = NULL;
14013     if (_PyPegen_is_memoized(p, factor_type, &_res)) {
14014         p->level--;
14015         return _res;
14016     }
14017     int _mark = p->mark;
14018     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14019         p->error_indicator = 1;
14020         p->level--;
14021         return NULL;
14022     }
14023     int _start_lineno = p->tokens[_mark]->lineno;
14024     UNUSED(_start_lineno); // Only used by EXTRA macro
14025     int _start_col_offset = p->tokens[_mark]->col_offset;
14026     UNUSED(_start_col_offset); // Only used by EXTRA macro
14027     { // '+' factor
14028         if (p->error_indicator) {
14029             p->level--;
14030             return NULL;
14031         }
14032         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14033         Token * _literal;
14034         expr_ty a;
14035         if (
14036             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
14037             &&
14038             (a = factor_rule(p))  // factor
14039         )
14040         {
14041             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14042             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14043             if (_token == NULL) {
14044                 p->level--;
14045                 return NULL;
14046             }
14047             int _end_lineno = _token->end_lineno;
14048             UNUSED(_end_lineno); // Only used by EXTRA macro
14049             int _end_col_offset = _token->end_col_offset;
14050             UNUSED(_end_col_offset); // Only used by EXTRA macro
14051             _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
14052             if (_res == NULL && PyErr_Occurred()) {
14053                 p->error_indicator = 1;
14054                 p->level--;
14055                 return NULL;
14056             }
14057             goto done;
14058         }
14059         p->mark = _mark;
14060         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14061                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
14062     }
14063     { // '-' factor
14064         if (p->error_indicator) {
14065             p->level--;
14066             return NULL;
14067         }
14068         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14069         Token * _literal;
14070         expr_ty a;
14071         if (
14072             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
14073             &&
14074             (a = factor_rule(p))  // factor
14075         )
14076         {
14077             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14078             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14079             if (_token == NULL) {
14080                 p->level--;
14081                 return NULL;
14082             }
14083             int _end_lineno = _token->end_lineno;
14084             UNUSED(_end_lineno); // Only used by EXTRA macro
14085             int _end_col_offset = _token->end_col_offset;
14086             UNUSED(_end_col_offset); // Only used by EXTRA macro
14087             _res = _PyAST_UnaryOp ( USub , a , EXTRA );
14088             if (_res == NULL && PyErr_Occurred()) {
14089                 p->error_indicator = 1;
14090                 p->level--;
14091                 return NULL;
14092             }
14093             goto done;
14094         }
14095         p->mark = _mark;
14096         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14097                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
14098     }
14099     { // '~' factor
14100         if (p->error_indicator) {
14101             p->level--;
14102             return NULL;
14103         }
14104         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14105         Token * _literal;
14106         expr_ty a;
14107         if (
14108             (_literal = _PyPegen_expect_token(p, 31))  // token='~'
14109             &&
14110             (a = factor_rule(p))  // factor
14111         )
14112         {
14113             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14114             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14115             if (_token == NULL) {
14116                 p->level--;
14117                 return NULL;
14118             }
14119             int _end_lineno = _token->end_lineno;
14120             UNUSED(_end_lineno); // Only used by EXTRA macro
14121             int _end_col_offset = _token->end_col_offset;
14122             UNUSED(_end_col_offset); // Only used by EXTRA macro
14123             _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
14124             if (_res == NULL && PyErr_Occurred()) {
14125                 p->error_indicator = 1;
14126                 p->level--;
14127                 return NULL;
14128             }
14129             goto done;
14130         }
14131         p->mark = _mark;
14132         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
14134     }
14135     { // power
14136         if (p->error_indicator) {
14137             p->level--;
14138             return NULL;
14139         }
14140         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
14141         expr_ty power_var;
14142         if (
14143             (power_var = power_rule(p))  // power
14144         )
14145         {
14146             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
14147             _res = power_var;
14148             goto done;
14149         }
14150         p->mark = _mark;
14151         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14152                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
14153     }
14154     _res = NULL;
14155   done:
14156     _PyPegen_insert_memo(p, _mark, factor_type, _res);
14157     p->level--;
14158     return _res;
14159 }
14160 
14161 // power: await_primary '**' factor | await_primary
14162 static expr_ty
power_rule(Parser * p)14163 power_rule(Parser *p)
14164 {
14165     if (p->level++ == MAXSTACK) {
14166         p->error_indicator = 1;
14167         PyErr_NoMemory();
14168     }
14169     if (p->error_indicator) {
14170         p->level--;
14171         return NULL;
14172     }
14173     expr_ty _res = NULL;
14174     int _mark = p->mark;
14175     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14176         p->error_indicator = 1;
14177         p->level--;
14178         return NULL;
14179     }
14180     int _start_lineno = p->tokens[_mark]->lineno;
14181     UNUSED(_start_lineno); // Only used by EXTRA macro
14182     int _start_col_offset = p->tokens[_mark]->col_offset;
14183     UNUSED(_start_col_offset); // Only used by EXTRA macro
14184     { // await_primary '**' factor
14185         if (p->error_indicator) {
14186             p->level--;
14187             return NULL;
14188         }
14189         D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14190         Token * _literal;
14191         expr_ty a;
14192         expr_ty b;
14193         if (
14194             (a = await_primary_rule(p))  // await_primary
14195             &&
14196             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14197             &&
14198             (b = factor_rule(p))  // factor
14199         )
14200         {
14201             D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14202             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14203             if (_token == NULL) {
14204                 p->level--;
14205                 return NULL;
14206             }
14207             int _end_lineno = _token->end_lineno;
14208             UNUSED(_end_lineno); // Only used by EXTRA macro
14209             int _end_col_offset = _token->end_col_offset;
14210             UNUSED(_end_col_offset); // Only used by EXTRA macro
14211             _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
14212             if (_res == NULL && PyErr_Occurred()) {
14213                 p->error_indicator = 1;
14214                 p->level--;
14215                 return NULL;
14216             }
14217             goto done;
14218         }
14219         p->mark = _mark;
14220         D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14221                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
14222     }
14223     { // await_primary
14224         if (p->error_indicator) {
14225             p->level--;
14226             return NULL;
14227         }
14228         D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
14229         expr_ty await_primary_var;
14230         if (
14231             (await_primary_var = await_primary_rule(p))  // await_primary
14232         )
14233         {
14234             D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
14235             _res = await_primary_var;
14236             goto done;
14237         }
14238         p->mark = _mark;
14239         D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14240                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
14241     }
14242     _res = NULL;
14243   done:
14244     p->level--;
14245     return _res;
14246 }
14247 
14248 // await_primary: AWAIT primary | primary
14249 static expr_ty
await_primary_rule(Parser * p)14250 await_primary_rule(Parser *p)
14251 {
14252     if (p->level++ == MAXSTACK) {
14253         p->error_indicator = 1;
14254         PyErr_NoMemory();
14255     }
14256     if (p->error_indicator) {
14257         p->level--;
14258         return NULL;
14259     }
14260     expr_ty _res = NULL;
14261     if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
14262         p->level--;
14263         return _res;
14264     }
14265     int _mark = p->mark;
14266     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14267         p->error_indicator = 1;
14268         p->level--;
14269         return NULL;
14270     }
14271     int _start_lineno = p->tokens[_mark]->lineno;
14272     UNUSED(_start_lineno); // Only used by EXTRA macro
14273     int _start_col_offset = p->tokens[_mark]->col_offset;
14274     UNUSED(_start_col_offset); // Only used by EXTRA macro
14275     { // AWAIT primary
14276         if (p->error_indicator) {
14277             p->level--;
14278             return NULL;
14279         }
14280         D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
14281         expr_ty a;
14282         Token * await_var;
14283         if (
14284             (await_var = _PyPegen_expect_token(p, AWAIT))  // token='AWAIT'
14285             &&
14286             (a = primary_rule(p))  // primary
14287         )
14288         {
14289             D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
14290             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14291             if (_token == NULL) {
14292                 p->level--;
14293                 return NULL;
14294             }
14295             int _end_lineno = _token->end_lineno;
14296             UNUSED(_end_lineno); // Only used by EXTRA macro
14297             int _end_col_offset = _token->end_col_offset;
14298             UNUSED(_end_col_offset); // Only used by EXTRA macro
14299             _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
14300             if (_res == NULL && PyErr_Occurred()) {
14301                 p->error_indicator = 1;
14302                 p->level--;
14303                 return NULL;
14304             }
14305             goto done;
14306         }
14307         p->mark = _mark;
14308         D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14309                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "AWAIT primary"));
14310     }
14311     { // primary
14312         if (p->error_indicator) {
14313             p->level--;
14314             return NULL;
14315         }
14316         D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
14317         expr_ty primary_var;
14318         if (
14319             (primary_var = primary_rule(p))  // primary
14320         )
14321         {
14322             D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
14323             _res = primary_var;
14324             goto done;
14325         }
14326         p->mark = _mark;
14327         D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14328                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
14329     }
14330     _res = NULL;
14331   done:
14332     _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
14333     p->level--;
14334     return _res;
14335 }
14336 
14337 // Left-recursive
14338 // primary:
14339 //     | primary '.' NAME
14340 //     | primary genexp
14341 //     | primary '(' arguments? ')'
14342 //     | primary '[' slices ']'
14343 //     | atom
14344 static expr_ty primary_raw(Parser *);
14345 static expr_ty
primary_rule(Parser * p)14346 primary_rule(Parser *p)
14347 {
14348     if (p->level++ == MAXSTACK) {
14349         p->error_indicator = 1;
14350         PyErr_NoMemory();
14351     }
14352     expr_ty _res = NULL;
14353     if (_PyPegen_is_memoized(p, primary_type, &_res)) {
14354         p->level--;
14355         return _res;
14356     }
14357     int _mark = p->mark;
14358     int _resmark = p->mark;
14359     while (1) {
14360         int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
14361         if (tmpvar_8) {
14362             p->level--;
14363             return _res;
14364         }
14365         p->mark = _mark;
14366         p->in_raw_rule++;
14367         void *_raw = primary_raw(p);
14368         p->in_raw_rule--;
14369         if (p->error_indicator) {
14370             p->level--;
14371             return NULL;
14372         }
14373         if (_raw == NULL || p->mark <= _resmark)
14374             break;
14375         _resmark = p->mark;
14376         _res = _raw;
14377     }
14378     p->mark = _resmark;
14379     p->level--;
14380     return _res;
14381 }
14382 static expr_ty
primary_raw(Parser * p)14383 primary_raw(Parser *p)
14384 {
14385     if (p->level++ == MAXSTACK) {
14386         p->error_indicator = 1;
14387         PyErr_NoMemory();
14388     }
14389     if (p->error_indicator) {
14390         p->level--;
14391         return NULL;
14392     }
14393     expr_ty _res = NULL;
14394     int _mark = p->mark;
14395     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14396         p->error_indicator = 1;
14397         p->level--;
14398         return NULL;
14399     }
14400     int _start_lineno = p->tokens[_mark]->lineno;
14401     UNUSED(_start_lineno); // Only used by EXTRA macro
14402     int _start_col_offset = p->tokens[_mark]->col_offset;
14403     UNUSED(_start_col_offset); // Only used by EXTRA macro
14404     { // primary '.' NAME
14405         if (p->error_indicator) {
14406             p->level--;
14407             return NULL;
14408         }
14409         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14410         Token * _literal;
14411         expr_ty a;
14412         expr_ty b;
14413         if (
14414             (a = primary_rule(p))  // primary
14415             &&
14416             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
14417             &&
14418             (b = _PyPegen_name_token(p))  // NAME
14419         )
14420         {
14421             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14422             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14423             if (_token == NULL) {
14424                 p->level--;
14425                 return NULL;
14426             }
14427             int _end_lineno = _token->end_lineno;
14428             UNUSED(_end_lineno); // Only used by EXTRA macro
14429             int _end_col_offset = _token->end_col_offset;
14430             UNUSED(_end_col_offset); // Only used by EXTRA macro
14431             _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
14432             if (_res == NULL && PyErr_Occurred()) {
14433                 p->error_indicator = 1;
14434                 p->level--;
14435                 return NULL;
14436             }
14437             goto done;
14438         }
14439         p->mark = _mark;
14440         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14441                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
14442     }
14443     { // primary genexp
14444         if (p->error_indicator) {
14445             p->level--;
14446             return NULL;
14447         }
14448         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14449         expr_ty a;
14450         expr_ty b;
14451         if (
14452             (a = primary_rule(p))  // primary
14453             &&
14454             (b = genexp_rule(p))  // genexp
14455         )
14456         {
14457             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14458             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14459             if (_token == NULL) {
14460                 p->level--;
14461                 return NULL;
14462             }
14463             int _end_lineno = _token->end_lineno;
14464             UNUSED(_end_lineno); // Only used by EXTRA macro
14465             int _end_col_offset = _token->end_col_offset;
14466             UNUSED(_end_col_offset); // Only used by EXTRA macro
14467             _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq * , ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14468             if (_res == NULL && PyErr_Occurred()) {
14469                 p->error_indicator = 1;
14470                 p->level--;
14471                 return NULL;
14472             }
14473             goto done;
14474         }
14475         p->mark = _mark;
14476         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14477                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
14478     }
14479     { // primary '(' arguments? ')'
14480         if (p->error_indicator) {
14481             p->level--;
14482             return NULL;
14483         }
14484         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14485         Token * _literal;
14486         Token * _literal_1;
14487         expr_ty a;
14488         void *b;
14489         if (
14490             (a = primary_rule(p))  // primary
14491             &&
14492             (_literal = _PyPegen_expect_token(p, 7))  // token='('
14493             &&
14494             (b = arguments_rule(p), !p->error_indicator)  // arguments?
14495             &&
14496             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14497         )
14498         {
14499             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14500             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14501             if (_token == NULL) {
14502                 p->level--;
14503                 return NULL;
14504             }
14505             int _end_lineno = _token->end_lineno;
14506             UNUSED(_end_lineno); // Only used by EXTRA macro
14507             int _end_col_offset = _token->end_col_offset;
14508             UNUSED(_end_col_offset); // Only used by EXTRA macro
14509             _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14510             if (_res == NULL && PyErr_Occurred()) {
14511                 p->error_indicator = 1;
14512                 p->level--;
14513                 return NULL;
14514             }
14515             goto done;
14516         }
14517         p->mark = _mark;
14518         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14519                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
14520     }
14521     { // primary '[' slices ']'
14522         if (p->error_indicator) {
14523             p->level--;
14524             return NULL;
14525         }
14526         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14527         Token * _literal;
14528         Token * _literal_1;
14529         expr_ty a;
14530         expr_ty b;
14531         if (
14532             (a = primary_rule(p))  // primary
14533             &&
14534             (_literal = _PyPegen_expect_token(p, 9))  // token='['
14535             &&
14536             (b = slices_rule(p))  // slices
14537             &&
14538             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14539         )
14540         {
14541             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14542             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14543             if (_token == NULL) {
14544                 p->level--;
14545                 return NULL;
14546             }
14547             int _end_lineno = _token->end_lineno;
14548             UNUSED(_end_lineno); // Only used by EXTRA macro
14549             int _end_col_offset = _token->end_col_offset;
14550             UNUSED(_end_col_offset); // Only used by EXTRA macro
14551             _res = _PyAST_Subscript ( a , b , Load , EXTRA );
14552             if (_res == NULL && PyErr_Occurred()) {
14553                 p->error_indicator = 1;
14554                 p->level--;
14555                 return NULL;
14556             }
14557             goto done;
14558         }
14559         p->mark = _mark;
14560         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14561                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
14562     }
14563     { // atom
14564         if (p->error_indicator) {
14565             p->level--;
14566             return NULL;
14567         }
14568         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
14569         expr_ty atom_var;
14570         if (
14571             (atom_var = atom_rule(p))  // atom
14572         )
14573         {
14574             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
14575             _res = atom_var;
14576             goto done;
14577         }
14578         p->mark = _mark;
14579         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14580                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
14581     }
14582     _res = NULL;
14583   done:
14584     p->level--;
14585     return _res;
14586 }
14587 
14588 // slices: slice !',' | ','.slice+ ','?
14589 static expr_ty
slices_rule(Parser * p)14590 slices_rule(Parser *p)
14591 {
14592     if (p->level++ == MAXSTACK) {
14593         p->error_indicator = 1;
14594         PyErr_NoMemory();
14595     }
14596     if (p->error_indicator) {
14597         p->level--;
14598         return NULL;
14599     }
14600     expr_ty _res = NULL;
14601     int _mark = p->mark;
14602     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14603         p->error_indicator = 1;
14604         p->level--;
14605         return NULL;
14606     }
14607     int _start_lineno = p->tokens[_mark]->lineno;
14608     UNUSED(_start_lineno); // Only used by EXTRA macro
14609     int _start_col_offset = p->tokens[_mark]->col_offset;
14610     UNUSED(_start_col_offset); // Only used by EXTRA macro
14611     { // slice !','
14612         if (p->error_indicator) {
14613             p->level--;
14614             return NULL;
14615         }
14616         D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
14617         expr_ty a;
14618         if (
14619             (a = slice_rule(p))  // slice
14620             &&
14621             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
14622         )
14623         {
14624             D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
14625             _res = a;
14626             if (_res == NULL && PyErr_Occurred()) {
14627                 p->error_indicator = 1;
14628                 p->level--;
14629                 return NULL;
14630             }
14631             goto done;
14632         }
14633         p->mark = _mark;
14634         D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14635                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
14636     }
14637     { // ','.slice+ ','?
14638         if (p->error_indicator) {
14639             p->level--;
14640             return NULL;
14641         }
14642         D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
14643         void *_opt_var;
14644         UNUSED(_opt_var); // Silence compiler warnings
14645         asdl_expr_seq* a;
14646         if (
14647             (a = (asdl_expr_seq*)_gather_108_rule(p))  // ','.slice+
14648             &&
14649             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14650         )
14651         {
14652             D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
14653             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14654             if (_token == NULL) {
14655                 p->level--;
14656                 return NULL;
14657             }
14658             int _end_lineno = _token->end_lineno;
14659             UNUSED(_end_lineno); // Only used by EXTRA macro
14660             int _end_col_offset = _token->end_col_offset;
14661             UNUSED(_end_col_offset); // Only used by EXTRA macro
14662             _res = _PyAST_Tuple ( a , Load , EXTRA );
14663             if (_res == NULL && PyErr_Occurred()) {
14664                 p->error_indicator = 1;
14665                 p->level--;
14666                 return NULL;
14667             }
14668             goto done;
14669         }
14670         p->mark = _mark;
14671         D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14672                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.slice+ ','?"));
14673     }
14674     _res = NULL;
14675   done:
14676     p->level--;
14677     return _res;
14678 }
14679 
14680 // slice: expression? ':' expression? [':' expression?] | named_expression
14681 static expr_ty
slice_rule(Parser * p)14682 slice_rule(Parser *p)
14683 {
14684     if (p->level++ == MAXSTACK) {
14685         p->error_indicator = 1;
14686         PyErr_NoMemory();
14687     }
14688     if (p->error_indicator) {
14689         p->level--;
14690         return NULL;
14691     }
14692     expr_ty _res = NULL;
14693     int _mark = p->mark;
14694     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14695         p->error_indicator = 1;
14696         p->level--;
14697         return NULL;
14698     }
14699     int _start_lineno = p->tokens[_mark]->lineno;
14700     UNUSED(_start_lineno); // Only used by EXTRA macro
14701     int _start_col_offset = p->tokens[_mark]->col_offset;
14702     UNUSED(_start_col_offset); // Only used by EXTRA macro
14703     { // expression? ':' expression? [':' expression?]
14704         if (p->error_indicator) {
14705             p->level--;
14706             return NULL;
14707         }
14708         D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14709         Token * _literal;
14710         void *a;
14711         void *b;
14712         void *c;
14713         if (
14714             (a = expression_rule(p), !p->error_indicator)  // expression?
14715             &&
14716             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14717             &&
14718             (b = expression_rule(p), !p->error_indicator)  // expression?
14719             &&
14720             (c = _tmp_110_rule(p), !p->error_indicator)  // [':' expression?]
14721         )
14722         {
14723             D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14724             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14725             if (_token == NULL) {
14726                 p->level--;
14727                 return NULL;
14728             }
14729             int _end_lineno = _token->end_lineno;
14730             UNUSED(_end_lineno); // Only used by EXTRA macro
14731             int _end_col_offset = _token->end_col_offset;
14732             UNUSED(_end_col_offset); // Only used by EXTRA macro
14733             _res = _PyAST_Slice ( a , b , c , EXTRA );
14734             if (_res == NULL && PyErr_Occurred()) {
14735                 p->error_indicator = 1;
14736                 p->level--;
14737                 return NULL;
14738             }
14739             goto done;
14740         }
14741         p->mark = _mark;
14742         D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14743                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14744     }
14745     { // named_expression
14746         if (p->error_indicator) {
14747             p->level--;
14748             return NULL;
14749         }
14750         D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14751         expr_ty a;
14752         if (
14753             (a = named_expression_rule(p))  // named_expression
14754         )
14755         {
14756             D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14757             _res = a;
14758             if (_res == NULL && PyErr_Occurred()) {
14759                 p->error_indicator = 1;
14760                 p->level--;
14761                 return NULL;
14762             }
14763             goto done;
14764         }
14765         p->mark = _mark;
14766         D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14768     }
14769     _res = NULL;
14770   done:
14771     p->level--;
14772     return _res;
14773 }
14774 
14775 // atom:
14776 //     | NAME
14777 //     | 'True'
14778 //     | 'False'
14779 //     | 'None'
14780 //     | &STRING strings
14781 //     | NUMBER
14782 //     | &'(' (tuple | group | genexp)
14783 //     | &'[' (list | listcomp)
14784 //     | &'{' (dict | set | dictcomp | setcomp)
14785 //     | '...'
14786 static expr_ty
atom_rule(Parser * p)14787 atom_rule(Parser *p)
14788 {
14789     if (p->level++ == MAXSTACK) {
14790         p->error_indicator = 1;
14791         PyErr_NoMemory();
14792     }
14793     if (p->error_indicator) {
14794         p->level--;
14795         return NULL;
14796     }
14797     expr_ty _res = NULL;
14798     int _mark = p->mark;
14799     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14800         p->error_indicator = 1;
14801         p->level--;
14802         return NULL;
14803     }
14804     int _start_lineno = p->tokens[_mark]->lineno;
14805     UNUSED(_start_lineno); // Only used by EXTRA macro
14806     int _start_col_offset = p->tokens[_mark]->col_offset;
14807     UNUSED(_start_col_offset); // Only used by EXTRA macro
14808     { // NAME
14809         if (p->error_indicator) {
14810             p->level--;
14811             return NULL;
14812         }
14813         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14814         expr_ty name_var;
14815         if (
14816             (name_var = _PyPegen_name_token(p))  // NAME
14817         )
14818         {
14819             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
14820             _res = name_var;
14821             goto done;
14822         }
14823         p->mark = _mark;
14824         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14825                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
14826     }
14827     { // 'True'
14828         if (p->error_indicator) {
14829             p->level--;
14830             return NULL;
14831         }
14832         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
14833         Token * _keyword;
14834         if (
14835             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
14836         )
14837         {
14838             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
14839             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14840             if (_token == NULL) {
14841                 p->level--;
14842                 return NULL;
14843             }
14844             int _end_lineno = _token->end_lineno;
14845             UNUSED(_end_lineno); // Only used by EXTRA macro
14846             int _end_col_offset = _token->end_col_offset;
14847             UNUSED(_end_col_offset); // Only used by EXTRA macro
14848             _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
14849             if (_res == NULL && PyErr_Occurred()) {
14850                 p->error_indicator = 1;
14851                 p->level--;
14852                 return NULL;
14853             }
14854             goto done;
14855         }
14856         p->mark = _mark;
14857         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14858                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
14859     }
14860     { // 'False'
14861         if (p->error_indicator) {
14862             p->level--;
14863             return NULL;
14864         }
14865         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
14866         Token * _keyword;
14867         if (
14868             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
14869         )
14870         {
14871             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
14872             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14873             if (_token == NULL) {
14874                 p->level--;
14875                 return NULL;
14876             }
14877             int _end_lineno = _token->end_lineno;
14878             UNUSED(_end_lineno); // Only used by EXTRA macro
14879             int _end_col_offset = _token->end_col_offset;
14880             UNUSED(_end_col_offset); // Only used by EXTRA macro
14881             _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
14882             if (_res == NULL && PyErr_Occurred()) {
14883                 p->error_indicator = 1;
14884                 p->level--;
14885                 return NULL;
14886             }
14887             goto done;
14888         }
14889         p->mark = _mark;
14890         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14891                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
14892     }
14893     { // 'None'
14894         if (p->error_indicator) {
14895             p->level--;
14896             return NULL;
14897         }
14898         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
14899         Token * _keyword;
14900         if (
14901             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
14902         )
14903         {
14904             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
14905             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14906             if (_token == NULL) {
14907                 p->level--;
14908                 return NULL;
14909             }
14910             int _end_lineno = _token->end_lineno;
14911             UNUSED(_end_lineno); // Only used by EXTRA macro
14912             int _end_col_offset = _token->end_col_offset;
14913             UNUSED(_end_col_offset); // Only used by EXTRA macro
14914             _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
14915             if (_res == NULL && PyErr_Occurred()) {
14916                 p->error_indicator = 1;
14917                 p->level--;
14918                 return NULL;
14919             }
14920             goto done;
14921         }
14922         p->mark = _mark;
14923         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14924                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
14925     }
14926     { // &STRING strings
14927         if (p->error_indicator) {
14928             p->level--;
14929             return NULL;
14930         }
14931         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
14932         expr_ty strings_var;
14933         if (
14934             _PyPegen_lookahead(1, _PyPegen_string_token, p)
14935             &&
14936             (strings_var = strings_rule(p))  // strings
14937         )
14938         {
14939             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
14940             _res = strings_var;
14941             goto done;
14942         }
14943         p->mark = _mark;
14944         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14945                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&STRING strings"));
14946     }
14947     { // NUMBER
14948         if (p->error_indicator) {
14949             p->level--;
14950             return NULL;
14951         }
14952         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
14953         expr_ty number_var;
14954         if (
14955             (number_var = _PyPegen_number_token(p))  // NUMBER
14956         )
14957         {
14958             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
14959             _res = number_var;
14960             goto done;
14961         }
14962         p->mark = _mark;
14963         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14964                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
14965     }
14966     { // &'(' (tuple | group | genexp)
14967         if (p->error_indicator) {
14968             p->level--;
14969             return NULL;
14970         }
14971         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
14972         void *_tmp_111_var;
14973         if (
14974             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
14975             &&
14976             (_tmp_111_var = _tmp_111_rule(p))  // tuple | group | genexp
14977         )
14978         {
14979             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
14980             _res = _tmp_111_var;
14981             goto done;
14982         }
14983         p->mark = _mark;
14984         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14985                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
14986     }
14987     { // &'[' (list | listcomp)
14988         if (p->error_indicator) {
14989             p->level--;
14990             return NULL;
14991         }
14992         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
14993         void *_tmp_112_var;
14994         if (
14995             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
14996             &&
14997             (_tmp_112_var = _tmp_112_rule(p))  // list | listcomp
14998         )
14999         {
15000             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15001             _res = _tmp_112_var;
15002             goto done;
15003         }
15004         p->mark = _mark;
15005         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15006                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
15007     }
15008     { // &'{' (dict | set | dictcomp | setcomp)
15009         if (p->error_indicator) {
15010             p->level--;
15011             return NULL;
15012         }
15013         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15014         void *_tmp_113_var;
15015         if (
15016             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
15017             &&
15018             (_tmp_113_var = _tmp_113_rule(p))  // dict | set | dictcomp | setcomp
15019         )
15020         {
15021             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15022             _res = _tmp_113_var;
15023             goto done;
15024         }
15025         p->mark = _mark;
15026         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15027                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15028     }
15029     { // '...'
15030         if (p->error_indicator) {
15031             p->level--;
15032             return NULL;
15033         }
15034         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
15035         Token * _literal;
15036         if (
15037             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
15038         )
15039         {
15040             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
15041             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15042             if (_token == NULL) {
15043                 p->level--;
15044                 return NULL;
15045             }
15046             int _end_lineno = _token->end_lineno;
15047             UNUSED(_end_lineno); // Only used by EXTRA macro
15048             int _end_col_offset = _token->end_col_offset;
15049             UNUSED(_end_col_offset); // Only used by EXTRA macro
15050             _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
15051             if (_res == NULL && PyErr_Occurred()) {
15052                 p->error_indicator = 1;
15053                 p->level--;
15054                 return NULL;
15055             }
15056             goto done;
15057         }
15058         p->mark = _mark;
15059         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15060                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
15061     }
15062     _res = NULL;
15063   done:
15064     p->level--;
15065     return _res;
15066 }
15067 
15068 // strings: STRING+
15069 static expr_ty
strings_rule(Parser * p)15070 strings_rule(Parser *p)
15071 {
15072     if (p->level++ == MAXSTACK) {
15073         p->error_indicator = 1;
15074         PyErr_NoMemory();
15075     }
15076     if (p->error_indicator) {
15077         p->level--;
15078         return NULL;
15079     }
15080     expr_ty _res = NULL;
15081     if (_PyPegen_is_memoized(p, strings_type, &_res)) {
15082         p->level--;
15083         return _res;
15084     }
15085     int _mark = p->mark;
15086     { // STRING+
15087         if (p->error_indicator) {
15088             p->level--;
15089             return NULL;
15090         }
15091         D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING+"));
15092         asdl_seq * a;
15093         if (
15094             (a = _loop1_114_rule(p))  // STRING+
15095         )
15096         {
15097             D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING+"));
15098             _res = _PyPegen_concatenate_strings ( p , a );
15099             if (_res == NULL && PyErr_Occurred()) {
15100                 p->error_indicator = 1;
15101                 p->level--;
15102                 return NULL;
15103             }
15104             goto done;
15105         }
15106         p->mark = _mark;
15107         D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
15108                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING+"));
15109     }
15110     _res = NULL;
15111   done:
15112     _PyPegen_insert_memo(p, _mark, strings_type, _res);
15113     p->level--;
15114     return _res;
15115 }
15116 
15117 // list: '[' star_named_expressions? ']'
15118 static expr_ty
list_rule(Parser * p)15119 list_rule(Parser *p)
15120 {
15121     if (p->level++ == MAXSTACK) {
15122         p->error_indicator = 1;
15123         PyErr_NoMemory();
15124     }
15125     if (p->error_indicator) {
15126         p->level--;
15127         return NULL;
15128     }
15129     expr_ty _res = NULL;
15130     int _mark = p->mark;
15131     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15132         p->error_indicator = 1;
15133         p->level--;
15134         return NULL;
15135     }
15136     int _start_lineno = p->tokens[_mark]->lineno;
15137     UNUSED(_start_lineno); // Only used by EXTRA macro
15138     int _start_col_offset = p->tokens[_mark]->col_offset;
15139     UNUSED(_start_col_offset); // Only used by EXTRA macro
15140     { // '[' star_named_expressions? ']'
15141         if (p->error_indicator) {
15142             p->level--;
15143             return NULL;
15144         }
15145         D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
15146         Token * _literal;
15147         Token * _literal_1;
15148         void *a;
15149         if (
15150             (_literal = _PyPegen_expect_token(p, 9))  // token='['
15151             &&
15152             (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
15153             &&
15154             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
15155         )
15156         {
15157             D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
15158             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15159             if (_token == NULL) {
15160                 p->level--;
15161                 return NULL;
15162             }
15163             int _end_lineno = _token->end_lineno;
15164             UNUSED(_end_lineno); // Only used by EXTRA macro
15165             int _end_col_offset = _token->end_col_offset;
15166             UNUSED(_end_col_offset); // Only used by EXTRA macro
15167             _res = _PyAST_List ( a , Load , EXTRA );
15168             if (_res == NULL && PyErr_Occurred()) {
15169                 p->error_indicator = 1;
15170                 p->level--;
15171                 return NULL;
15172             }
15173             goto done;
15174         }
15175         p->mark = _mark;
15176         D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
15177                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
15178     }
15179     _res = NULL;
15180   done:
15181     p->level--;
15182     return _res;
15183 }
15184 
15185 // listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
15186 static expr_ty
listcomp_rule(Parser * p)15187 listcomp_rule(Parser *p)
15188 {
15189     if (p->level++ == MAXSTACK) {
15190         p->error_indicator = 1;
15191         PyErr_NoMemory();
15192     }
15193     if (p->error_indicator) {
15194         p->level--;
15195         return NULL;
15196     }
15197     expr_ty _res = NULL;
15198     int _mark = p->mark;
15199     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15200         p->error_indicator = 1;
15201         p->level--;
15202         return NULL;
15203     }
15204     int _start_lineno = p->tokens[_mark]->lineno;
15205     UNUSED(_start_lineno); // Only used by EXTRA macro
15206     int _start_col_offset = p->tokens[_mark]->col_offset;
15207     UNUSED(_start_col_offset); // Only used by EXTRA macro
15208     { // '[' named_expression for_if_clauses ']'
15209         if (p->error_indicator) {
15210             p->level--;
15211             return NULL;
15212         }
15213         D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
15214         Token * _literal;
15215         Token * _literal_1;
15216         expr_ty a;
15217         asdl_comprehension_seq* b;
15218         if (
15219             (_literal = _PyPegen_expect_token(p, 9))  // token='['
15220             &&
15221             (a = named_expression_rule(p))  // named_expression
15222             &&
15223             (b = for_if_clauses_rule(p))  // for_if_clauses
15224             &&
15225             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
15226         )
15227         {
15228             D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
15229             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15230             if (_token == NULL) {
15231                 p->level--;
15232                 return NULL;
15233             }
15234             int _end_lineno = _token->end_lineno;
15235             UNUSED(_end_lineno); // Only used by EXTRA macro
15236             int _end_col_offset = _token->end_col_offset;
15237             UNUSED(_end_col_offset); // Only used by EXTRA macro
15238             _res = _PyAST_ListComp ( a , b , EXTRA );
15239             if (_res == NULL && PyErr_Occurred()) {
15240                 p->error_indicator = 1;
15241                 p->level--;
15242                 return NULL;
15243             }
15244             goto done;
15245         }
15246         p->mark = _mark;
15247         D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
15248                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
15249     }
15250     if (p->call_invalid_rules) { // invalid_comprehension
15251         if (p->error_indicator) {
15252             p->level--;
15253             return NULL;
15254         }
15255         D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15256         void *invalid_comprehension_var;
15257         if (
15258             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
15259         )
15260         {
15261             D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15262             _res = invalid_comprehension_var;
15263             goto done;
15264         }
15265         p->mark = _mark;
15266         D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
15267                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
15268     }
15269     _res = NULL;
15270   done:
15271     p->level--;
15272     return _res;
15273 }
15274 
15275 // tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
15276 static expr_ty
tuple_rule(Parser * p)15277 tuple_rule(Parser *p)
15278 {
15279     if (p->level++ == MAXSTACK) {
15280         p->error_indicator = 1;
15281         PyErr_NoMemory();
15282     }
15283     if (p->error_indicator) {
15284         p->level--;
15285         return NULL;
15286     }
15287     expr_ty _res = NULL;
15288     int _mark = p->mark;
15289     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15290         p->error_indicator = 1;
15291         p->level--;
15292         return NULL;
15293     }
15294     int _start_lineno = p->tokens[_mark]->lineno;
15295     UNUSED(_start_lineno); // Only used by EXTRA macro
15296     int _start_col_offset = p->tokens[_mark]->col_offset;
15297     UNUSED(_start_col_offset); // Only used by EXTRA macro
15298     { // '(' [star_named_expression ',' star_named_expressions?] ')'
15299         if (p->error_indicator) {
15300             p->level--;
15301             return NULL;
15302         }
15303         D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
15304         Token * _literal;
15305         Token * _literal_1;
15306         void *a;
15307         if (
15308             (_literal = _PyPegen_expect_token(p, 7))  // token='('
15309             &&
15310             (a = _tmp_115_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
15311             &&
15312             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15313         )
15314         {
15315             D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
15316             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15317             if (_token == NULL) {
15318                 p->level--;
15319                 return NULL;
15320             }
15321             int _end_lineno = _token->end_lineno;
15322             UNUSED(_end_lineno); // Only used by EXTRA macro
15323             int _end_col_offset = _token->end_col_offset;
15324             UNUSED(_end_col_offset); // Only used by EXTRA macro
15325             _res = _PyAST_Tuple ( a , Load , EXTRA );
15326             if (_res == NULL && PyErr_Occurred()) {
15327                 p->error_indicator = 1;
15328                 p->level--;
15329                 return NULL;
15330             }
15331             goto done;
15332         }
15333         p->mark = _mark;
15334         D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
15335                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
15336     }
15337     _res = NULL;
15338   done:
15339     p->level--;
15340     return _res;
15341 }
15342 
15343 // group: '(' (yield_expr | named_expression) ')' | invalid_group
15344 static expr_ty
group_rule(Parser * p)15345 group_rule(Parser *p)
15346 {
15347     if (p->level++ == MAXSTACK) {
15348         p->error_indicator = 1;
15349         PyErr_NoMemory();
15350     }
15351     if (p->error_indicator) {
15352         p->level--;
15353         return NULL;
15354     }
15355     expr_ty _res = NULL;
15356     int _mark = p->mark;
15357     { // '(' (yield_expr | named_expression) ')'
15358         if (p->error_indicator) {
15359             p->level--;
15360             return NULL;
15361         }
15362         D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15363         Token * _literal;
15364         Token * _literal_1;
15365         void *a;
15366         if (
15367             (_literal = _PyPegen_expect_token(p, 7))  // token='('
15368             &&
15369             (a = _tmp_116_rule(p))  // yield_expr | named_expression
15370             &&
15371             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15372         )
15373         {
15374             D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15375             _res = a;
15376             if (_res == NULL && PyErr_Occurred()) {
15377                 p->error_indicator = 1;
15378                 p->level--;
15379                 return NULL;
15380             }
15381             goto done;
15382         }
15383         p->mark = _mark;
15384         D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15385                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15386     }
15387     if (p->call_invalid_rules) { // invalid_group
15388         if (p->error_indicator) {
15389             p->level--;
15390             return NULL;
15391         }
15392         D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15393         void *invalid_group_var;
15394         if (
15395             (invalid_group_var = invalid_group_rule(p))  // invalid_group
15396         )
15397         {
15398             D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15399             _res = invalid_group_var;
15400             goto done;
15401         }
15402         p->mark = _mark;
15403         D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15404                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
15405     }
15406     _res = NULL;
15407   done:
15408     p->level--;
15409     return _res;
15410 }
15411 
15412 // genexp:
15413 //     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
15414 //     | invalid_comprehension
15415 static expr_ty
genexp_rule(Parser * p)15416 genexp_rule(Parser *p)
15417 {
15418     if (p->level++ == MAXSTACK) {
15419         p->error_indicator = 1;
15420         PyErr_NoMemory();
15421     }
15422     if (p->error_indicator) {
15423         p->level--;
15424         return NULL;
15425     }
15426     expr_ty _res = NULL;
15427     int _mark = p->mark;
15428     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15429         p->error_indicator = 1;
15430         p->level--;
15431         return NULL;
15432     }
15433     int _start_lineno = p->tokens[_mark]->lineno;
15434     UNUSED(_start_lineno); // Only used by EXTRA macro
15435     int _start_col_offset = p->tokens[_mark]->col_offset;
15436     UNUSED(_start_col_offset); // Only used by EXTRA macro
15437     { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
15438         if (p->error_indicator) {
15439             p->level--;
15440             return NULL;
15441         }
15442         D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
15443         Token * _literal;
15444         Token * _literal_1;
15445         void *a;
15446         asdl_comprehension_seq* b;
15447         if (
15448             (_literal = _PyPegen_expect_token(p, 7))  // token='('
15449             &&
15450             (a = _tmp_117_rule(p))  // assignment_expression | expression !':='
15451             &&
15452             (b = for_if_clauses_rule(p))  // for_if_clauses
15453             &&
15454             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15455         )
15456         {
15457             D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
15458             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15459             if (_token == NULL) {
15460                 p->level--;
15461                 return NULL;
15462             }
15463             int _end_lineno = _token->end_lineno;
15464             UNUSED(_end_lineno); // Only used by EXTRA macro
15465             int _end_col_offset = _token->end_col_offset;
15466             UNUSED(_end_col_offset); // Only used by EXTRA macro
15467             _res = _PyAST_GeneratorExp ( a , b , EXTRA );
15468             if (_res == NULL && PyErr_Occurred()) {
15469                 p->error_indicator = 1;
15470                 p->level--;
15471                 return NULL;
15472             }
15473             goto done;
15474         }
15475         p->mark = _mark;
15476         D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
15477                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
15478     }
15479     if (p->call_invalid_rules) { // invalid_comprehension
15480         if (p->error_indicator) {
15481             p->level--;
15482             return NULL;
15483         }
15484         D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15485         void *invalid_comprehension_var;
15486         if (
15487             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
15488         )
15489         {
15490             D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15491             _res = invalid_comprehension_var;
15492             goto done;
15493         }
15494         p->mark = _mark;
15495         D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
15496                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
15497     }
15498     _res = NULL;
15499   done:
15500     p->level--;
15501     return _res;
15502 }
15503 
15504 // set: '{' star_named_expressions '}'
15505 static expr_ty
set_rule(Parser * p)15506 set_rule(Parser *p)
15507 {
15508     if (p->level++ == MAXSTACK) {
15509         p->error_indicator = 1;
15510         PyErr_NoMemory();
15511     }
15512     if (p->error_indicator) {
15513         p->level--;
15514         return NULL;
15515     }
15516     expr_ty _res = NULL;
15517     int _mark = p->mark;
15518     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15519         p->error_indicator = 1;
15520         p->level--;
15521         return NULL;
15522     }
15523     int _start_lineno = p->tokens[_mark]->lineno;
15524     UNUSED(_start_lineno); // Only used by EXTRA macro
15525     int _start_col_offset = p->tokens[_mark]->col_offset;
15526     UNUSED(_start_col_offset); // Only used by EXTRA macro
15527     { // '{' star_named_expressions '}'
15528         if (p->error_indicator) {
15529             p->level--;
15530             return NULL;
15531         }
15532         D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
15533         Token * _literal;
15534         Token * _literal_1;
15535         asdl_expr_seq* a;
15536         if (
15537             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15538             &&
15539             (a = star_named_expressions_rule(p))  // star_named_expressions
15540             &&
15541             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15542         )
15543         {
15544             D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
15545             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15546             if (_token == NULL) {
15547                 p->level--;
15548                 return NULL;
15549             }
15550             int _end_lineno = _token->end_lineno;
15551             UNUSED(_end_lineno); // Only used by EXTRA macro
15552             int _end_col_offset = _token->end_col_offset;
15553             UNUSED(_end_col_offset); // Only used by EXTRA macro
15554             _res = _PyAST_Set ( a , EXTRA );
15555             if (_res == NULL && PyErr_Occurred()) {
15556                 p->error_indicator = 1;
15557                 p->level--;
15558                 return NULL;
15559             }
15560             goto done;
15561         }
15562         p->mark = _mark;
15563         D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
15564                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
15565     }
15566     _res = NULL;
15567   done:
15568     p->level--;
15569     return _res;
15570 }
15571 
15572 // setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
15573 static expr_ty
setcomp_rule(Parser * p)15574 setcomp_rule(Parser *p)
15575 {
15576     if (p->level++ == MAXSTACK) {
15577         p->error_indicator = 1;
15578         PyErr_NoMemory();
15579     }
15580     if (p->error_indicator) {
15581         p->level--;
15582         return NULL;
15583     }
15584     expr_ty _res = NULL;
15585     int _mark = p->mark;
15586     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15587         p->error_indicator = 1;
15588         p->level--;
15589         return NULL;
15590     }
15591     int _start_lineno = p->tokens[_mark]->lineno;
15592     UNUSED(_start_lineno); // Only used by EXTRA macro
15593     int _start_col_offset = p->tokens[_mark]->col_offset;
15594     UNUSED(_start_col_offset); // Only used by EXTRA macro
15595     { // '{' named_expression for_if_clauses '}'
15596         if (p->error_indicator) {
15597             p->level--;
15598             return NULL;
15599         }
15600         D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15601         Token * _literal;
15602         Token * _literal_1;
15603         expr_ty a;
15604         asdl_comprehension_seq* b;
15605         if (
15606             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15607             &&
15608             (a = named_expression_rule(p))  // named_expression
15609             &&
15610             (b = for_if_clauses_rule(p))  // for_if_clauses
15611             &&
15612             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15613         )
15614         {
15615             D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15616             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15617             if (_token == NULL) {
15618                 p->level--;
15619                 return NULL;
15620             }
15621             int _end_lineno = _token->end_lineno;
15622             UNUSED(_end_lineno); // Only used by EXTRA macro
15623             int _end_col_offset = _token->end_col_offset;
15624             UNUSED(_end_col_offset); // Only used by EXTRA macro
15625             _res = _PyAST_SetComp ( a , b , EXTRA );
15626             if (_res == NULL && PyErr_Occurred()) {
15627                 p->error_indicator = 1;
15628                 p->level--;
15629                 return NULL;
15630             }
15631             goto done;
15632         }
15633         p->mark = _mark;
15634         D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
15635                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15636     }
15637     if (p->call_invalid_rules) { // invalid_comprehension
15638         if (p->error_indicator) {
15639             p->level--;
15640             return NULL;
15641         }
15642         D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15643         void *invalid_comprehension_var;
15644         if (
15645             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
15646         )
15647         {
15648             D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15649             _res = invalid_comprehension_var;
15650             goto done;
15651         }
15652         p->mark = _mark;
15653         D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
15654                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
15655     }
15656     _res = NULL;
15657   done:
15658     p->level--;
15659     return _res;
15660 }
15661 
15662 // dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
15663 static expr_ty
dict_rule(Parser * p)15664 dict_rule(Parser *p)
15665 {
15666     if (p->level++ == MAXSTACK) {
15667         p->error_indicator = 1;
15668         PyErr_NoMemory();
15669     }
15670     if (p->error_indicator) {
15671         p->level--;
15672         return NULL;
15673     }
15674     expr_ty _res = NULL;
15675     int _mark = p->mark;
15676     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15677         p->error_indicator = 1;
15678         p->level--;
15679         return NULL;
15680     }
15681     int _start_lineno = p->tokens[_mark]->lineno;
15682     UNUSED(_start_lineno); // Only used by EXTRA macro
15683     int _start_col_offset = p->tokens[_mark]->col_offset;
15684     UNUSED(_start_col_offset); // Only used by EXTRA macro
15685     { // '{' double_starred_kvpairs? '}'
15686         if (p->error_indicator) {
15687             p->level--;
15688             return NULL;
15689         }
15690         D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15691         Token * _literal;
15692         Token * _literal_1;
15693         void *a;
15694         if (
15695             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15696             &&
15697             (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
15698             &&
15699             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15700         )
15701         {
15702             D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15703             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15704             if (_token == NULL) {
15705                 p->level--;
15706                 return NULL;
15707             }
15708             int _end_lineno = _token->end_lineno;
15709             UNUSED(_end_lineno); // Only used by EXTRA macro
15710             int _end_col_offset = _token->end_col_offset;
15711             UNUSED(_end_col_offset); // Only used by EXTRA macro
15712             _res = _PyAST_Dict ( CHECK ( asdl_expr_seq * , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq * , _PyPegen_get_values ( p , a ) ) , EXTRA );
15713             if (_res == NULL && PyErr_Occurred()) {
15714                 p->error_indicator = 1;
15715                 p->level--;
15716                 return NULL;
15717             }
15718             goto done;
15719         }
15720         p->mark = _mark;
15721         D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
15722                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15723     }
15724     { // '{' invalid_double_starred_kvpairs '}'
15725         if (p->error_indicator) {
15726             p->level--;
15727             return NULL;
15728         }
15729         D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15730         Token * _literal;
15731         Token * _literal_1;
15732         void *invalid_double_starred_kvpairs_var;
15733         if (
15734             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15735             &&
15736             (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
15737             &&
15738             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15739         )
15740         {
15741             D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15742             _res = _PyPegen_dummy_name(p, _literal, invalid_double_starred_kvpairs_var, _literal_1);
15743             goto done;
15744         }
15745         p->mark = _mark;
15746         D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
15747                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15748     }
15749     _res = NULL;
15750   done:
15751     p->level--;
15752     return _res;
15753 }
15754 
15755 // dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
15756 static expr_ty
dictcomp_rule(Parser * p)15757 dictcomp_rule(Parser *p)
15758 {
15759     if (p->level++ == MAXSTACK) {
15760         p->error_indicator = 1;
15761         PyErr_NoMemory();
15762     }
15763     if (p->error_indicator) {
15764         p->level--;
15765         return NULL;
15766     }
15767     expr_ty _res = NULL;
15768     int _mark = p->mark;
15769     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15770         p->error_indicator = 1;
15771         p->level--;
15772         return NULL;
15773     }
15774     int _start_lineno = p->tokens[_mark]->lineno;
15775     UNUSED(_start_lineno); // Only used by EXTRA macro
15776     int _start_col_offset = p->tokens[_mark]->col_offset;
15777     UNUSED(_start_col_offset); // Only used by EXTRA macro
15778     { // '{' kvpair for_if_clauses '}'
15779         if (p->error_indicator) {
15780             p->level--;
15781             return NULL;
15782         }
15783         D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15784         Token * _literal;
15785         Token * _literal_1;
15786         KeyValuePair* a;
15787         asdl_comprehension_seq* b;
15788         if (
15789             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15790             &&
15791             (a = kvpair_rule(p))  // kvpair
15792             &&
15793             (b = for_if_clauses_rule(p))  // for_if_clauses
15794             &&
15795             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15796         )
15797         {
15798             D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15799             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15800             if (_token == NULL) {
15801                 p->level--;
15802                 return NULL;
15803             }
15804             int _end_lineno = _token->end_lineno;
15805             UNUSED(_end_lineno); // Only used by EXTRA macro
15806             int _end_col_offset = _token->end_col_offset;
15807             UNUSED(_end_col_offset); // Only used by EXTRA macro
15808             _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
15809             if (_res == NULL && PyErr_Occurred()) {
15810                 p->error_indicator = 1;
15811                 p->level--;
15812                 return NULL;
15813             }
15814             goto done;
15815         }
15816         p->mark = _mark;
15817         D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
15818                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15819     }
15820     if (p->call_invalid_rules) { // invalid_dict_comprehension
15821         if (p->error_indicator) {
15822             p->level--;
15823             return NULL;
15824         }
15825         D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
15826         void *invalid_dict_comprehension_var;
15827         if (
15828             (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
15829         )
15830         {
15831             D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
15832             _res = invalid_dict_comprehension_var;
15833             goto done;
15834         }
15835         p->mark = _mark;
15836         D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
15837                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
15838     }
15839     _res = NULL;
15840   done:
15841     p->level--;
15842     return _res;
15843 }
15844 
15845 // double_starred_kvpairs: ','.double_starred_kvpair+ ','?
15846 static asdl_seq*
double_starred_kvpairs_rule(Parser * p)15847 double_starred_kvpairs_rule(Parser *p)
15848 {
15849     if (p->level++ == MAXSTACK) {
15850         p->error_indicator = 1;
15851         PyErr_NoMemory();
15852     }
15853     if (p->error_indicator) {
15854         p->level--;
15855         return NULL;
15856     }
15857     asdl_seq* _res = NULL;
15858     int _mark = p->mark;
15859     { // ','.double_starred_kvpair+ ','?
15860         if (p->error_indicator) {
15861             p->level--;
15862             return NULL;
15863         }
15864         D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15865         void *_opt_var;
15866         UNUSED(_opt_var); // Silence compiler warnings
15867         asdl_seq * a;
15868         if (
15869             (a = _gather_118_rule(p))  // ','.double_starred_kvpair+
15870             &&
15871             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
15872         )
15873         {
15874             D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15875             _res = a;
15876             if (_res == NULL && PyErr_Occurred()) {
15877                 p->error_indicator = 1;
15878                 p->level--;
15879                 return NULL;
15880             }
15881             goto done;
15882         }
15883         p->mark = _mark;
15884         D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
15885                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15886     }
15887     _res = NULL;
15888   done:
15889     p->level--;
15890     return _res;
15891 }
15892 
15893 // double_starred_kvpair: '**' bitwise_or | kvpair
15894 static KeyValuePair*
double_starred_kvpair_rule(Parser * p)15895 double_starred_kvpair_rule(Parser *p)
15896 {
15897     if (p->level++ == MAXSTACK) {
15898         p->error_indicator = 1;
15899         PyErr_NoMemory();
15900     }
15901     if (p->error_indicator) {
15902         p->level--;
15903         return NULL;
15904     }
15905     KeyValuePair* _res = NULL;
15906     int _mark = p->mark;
15907     { // '**' bitwise_or
15908         if (p->error_indicator) {
15909             p->level--;
15910             return NULL;
15911         }
15912         D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
15913         Token * _literal;
15914         expr_ty a;
15915         if (
15916             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15917             &&
15918             (a = bitwise_or_rule(p))  // bitwise_or
15919         )
15920         {
15921             D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
15922             _res = _PyPegen_key_value_pair ( p , NULL , a );
15923             if (_res == NULL && PyErr_Occurred()) {
15924                 p->error_indicator = 1;
15925                 p->level--;
15926                 return NULL;
15927             }
15928             goto done;
15929         }
15930         p->mark = _mark;
15931         D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
15932                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
15933     }
15934     { // kvpair
15935         if (p->error_indicator) {
15936             p->level--;
15937             return NULL;
15938         }
15939         D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
15940         KeyValuePair* kvpair_var;
15941         if (
15942             (kvpair_var = kvpair_rule(p))  // kvpair
15943         )
15944         {
15945             D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
15946             _res = kvpair_var;
15947             goto done;
15948         }
15949         p->mark = _mark;
15950         D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
15951                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
15952     }
15953     _res = NULL;
15954   done:
15955     p->level--;
15956     return _res;
15957 }
15958 
15959 // kvpair: expression ':' expression
15960 static KeyValuePair*
kvpair_rule(Parser * p)15961 kvpair_rule(Parser *p)
15962 {
15963     if (p->level++ == MAXSTACK) {
15964         p->error_indicator = 1;
15965         PyErr_NoMemory();
15966     }
15967     if (p->error_indicator) {
15968         p->level--;
15969         return NULL;
15970     }
15971     KeyValuePair* _res = NULL;
15972     int _mark = p->mark;
15973     { // expression ':' expression
15974         if (p->error_indicator) {
15975             p->level--;
15976             return NULL;
15977         }
15978         D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
15979         Token * _literal;
15980         expr_ty a;
15981         expr_ty b;
15982         if (
15983             (a = expression_rule(p))  // expression
15984             &&
15985             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15986             &&
15987             (b = expression_rule(p))  // expression
15988         )
15989         {
15990             D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
15991             _res = _PyPegen_key_value_pair ( p , a , b );
15992             if (_res == NULL && PyErr_Occurred()) {
15993                 p->error_indicator = 1;
15994                 p->level--;
15995                 return NULL;
15996             }
15997             goto done;
15998         }
15999         p->mark = _mark;
16000         D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
16001                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
16002     }
16003     _res = NULL;
16004   done:
16005     p->level--;
16006     return _res;
16007 }
16008 
16009 // for_if_clauses: for_if_clause+
16010 static asdl_comprehension_seq*
for_if_clauses_rule(Parser * p)16011 for_if_clauses_rule(Parser *p)
16012 {
16013     if (p->level++ == MAXSTACK) {
16014         p->error_indicator = 1;
16015         PyErr_NoMemory();
16016     }
16017     if (p->error_indicator) {
16018         p->level--;
16019         return NULL;
16020     }
16021     asdl_comprehension_seq* _res = NULL;
16022     int _mark = p->mark;
16023     { // for_if_clause+
16024         if (p->error_indicator) {
16025             p->level--;
16026             return NULL;
16027         }
16028         D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
16029         asdl_comprehension_seq* a;
16030         if (
16031             (a = (asdl_comprehension_seq*)_loop1_120_rule(p))  // for_if_clause+
16032         )
16033         {
16034             D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
16035             _res = a;
16036             if (_res == NULL && PyErr_Occurred()) {
16037                 p->error_indicator = 1;
16038                 p->level--;
16039                 return NULL;
16040             }
16041             goto done;
16042         }
16043         p->mark = _mark;
16044         D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
16045                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
16046     }
16047     _res = NULL;
16048   done:
16049     p->level--;
16050     return _res;
16051 }
16052 
16053 // for_if_clause:
16054 //     | ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
16055 //     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
16056 //     | invalid_for_target
16057 static comprehension_ty
for_if_clause_rule(Parser * p)16058 for_if_clause_rule(Parser *p)
16059 {
16060     if (p->level++ == MAXSTACK) {
16061         p->error_indicator = 1;
16062         PyErr_NoMemory();
16063     }
16064     if (p->error_indicator) {
16065         p->level--;
16066         return NULL;
16067     }
16068     comprehension_ty _res = NULL;
16069     int _mark = p->mark;
16070     { // ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
16071         if (p->error_indicator) {
16072             p->level--;
16073             return NULL;
16074         }
16075         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16076         int _cut_var = 0;
16077         Token * _keyword;
16078         Token * _keyword_1;
16079         expr_ty a;
16080         Token * async_var;
16081         expr_ty b;
16082         asdl_expr_seq* c;
16083         if (
16084             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
16085             &&
16086             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
16087             &&
16088             (a = star_targets_rule(p))  // star_targets
16089             &&
16090             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
16091             &&
16092             (_cut_var = 1)
16093             &&
16094             (b = disjunction_rule(p))  // disjunction
16095             &&
16096             (c = (asdl_expr_seq*)_loop0_121_rule(p))  // (('if' disjunction))*
16097         )
16098         {
16099             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))*"));
16100             _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
16101             if (_res == NULL && PyErr_Occurred()) {
16102                 p->error_indicator = 1;
16103                 p->level--;
16104                 return NULL;
16105             }
16106             goto done;
16107         }
16108         p->mark = _mark;
16109         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
16110                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16111         if (_cut_var) {
16112             p->level--;
16113             return NULL;
16114         }
16115     }
16116     { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
16117         if (p->error_indicator) {
16118             p->level--;
16119             return NULL;
16120         }
16121         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16122         int _cut_var = 0;
16123         Token * _keyword;
16124         Token * _keyword_1;
16125         expr_ty a;
16126         expr_ty b;
16127         asdl_expr_seq* c;
16128         if (
16129             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
16130             &&
16131             (a = star_targets_rule(p))  // star_targets
16132             &&
16133             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
16134             &&
16135             (_cut_var = 1)
16136             &&
16137             (b = disjunction_rule(p))  // disjunction
16138             &&
16139             (c = (asdl_expr_seq*)_loop0_122_rule(p))  // (('if' disjunction))*
16140         )
16141         {
16142             D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16143             _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
16144             if (_res == NULL && PyErr_Occurred()) {
16145                 p->error_indicator = 1;
16146                 p->level--;
16147                 return NULL;
16148             }
16149             goto done;
16150         }
16151         p->mark = _mark;
16152         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
16153                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16154         if (_cut_var) {
16155             p->level--;
16156             return NULL;
16157         }
16158     }
16159     if (p->call_invalid_rules) { // invalid_for_target
16160         if (p->error_indicator) {
16161             p->level--;
16162             return NULL;
16163         }
16164         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
16165         void *invalid_for_target_var;
16166         if (
16167             (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
16168         )
16169         {
16170             D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
16171             _res = invalid_for_target_var;
16172             goto done;
16173         }
16174         p->mark = _mark;
16175         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
16176                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
16177     }
16178     _res = NULL;
16179   done:
16180     p->level--;
16181     return _res;
16182 }
16183 
16184 // yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
16185 static expr_ty
yield_expr_rule(Parser * p)16186 yield_expr_rule(Parser *p)
16187 {
16188     if (p->level++ == MAXSTACK) {
16189         p->error_indicator = 1;
16190         PyErr_NoMemory();
16191     }
16192     if (p->error_indicator) {
16193         p->level--;
16194         return NULL;
16195     }
16196     expr_ty _res = NULL;
16197     int _mark = p->mark;
16198     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16199         p->error_indicator = 1;
16200         p->level--;
16201         return NULL;
16202     }
16203     int _start_lineno = p->tokens[_mark]->lineno;
16204     UNUSED(_start_lineno); // Only used by EXTRA macro
16205     int _start_col_offset = p->tokens[_mark]->col_offset;
16206     UNUSED(_start_col_offset); // Only used by EXTRA macro
16207     { // 'yield' 'from' expression
16208         if (p->error_indicator) {
16209             p->level--;
16210             return NULL;
16211         }
16212         D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
16213         Token * _keyword;
16214         Token * _keyword_1;
16215         expr_ty a;
16216         if (
16217             (_keyword = _PyPegen_expect_token(p, 504))  // token='yield'
16218             &&
16219             (_keyword_1 = _PyPegen_expect_token(p, 514))  // token='from'
16220             &&
16221             (a = expression_rule(p))  // expression
16222         )
16223         {
16224             D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
16225             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16226             if (_token == NULL) {
16227                 p->level--;
16228                 return NULL;
16229             }
16230             int _end_lineno = _token->end_lineno;
16231             UNUSED(_end_lineno); // Only used by EXTRA macro
16232             int _end_col_offset = _token->end_col_offset;
16233             UNUSED(_end_col_offset); // Only used by EXTRA macro
16234             _res = _PyAST_YieldFrom ( a , EXTRA );
16235             if (_res == NULL && PyErr_Occurred()) {
16236                 p->error_indicator = 1;
16237                 p->level--;
16238                 return NULL;
16239             }
16240             goto done;
16241         }
16242         p->mark = _mark;
16243         D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
16244                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
16245     }
16246     { // 'yield' star_expressions?
16247         if (p->error_indicator) {
16248             p->level--;
16249             return NULL;
16250         }
16251         D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
16252         Token * _keyword;
16253         void *a;
16254         if (
16255             (_keyword = _PyPegen_expect_token(p, 504))  // token='yield'
16256             &&
16257             (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
16258         )
16259         {
16260             D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
16261             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16262             if (_token == NULL) {
16263                 p->level--;
16264                 return NULL;
16265             }
16266             int _end_lineno = _token->end_lineno;
16267             UNUSED(_end_lineno); // Only used by EXTRA macro
16268             int _end_col_offset = _token->end_col_offset;
16269             UNUSED(_end_col_offset); // Only used by EXTRA macro
16270             _res = _PyAST_Yield ( a , EXTRA );
16271             if (_res == NULL && PyErr_Occurred()) {
16272                 p->error_indicator = 1;
16273                 p->level--;
16274                 return NULL;
16275             }
16276             goto done;
16277         }
16278         p->mark = _mark;
16279         D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
16280                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
16281     }
16282     _res = NULL;
16283   done:
16284     p->level--;
16285     return _res;
16286 }
16287 
16288 // arguments: args ','? &')' | invalid_arguments
16289 static expr_ty
arguments_rule(Parser * p)16290 arguments_rule(Parser *p)
16291 {
16292     if (p->level++ == MAXSTACK) {
16293         p->error_indicator = 1;
16294         PyErr_NoMemory();
16295     }
16296     if (p->error_indicator) {
16297         p->level--;
16298         return NULL;
16299     }
16300     expr_ty _res = NULL;
16301     if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
16302         p->level--;
16303         return _res;
16304     }
16305     int _mark = p->mark;
16306     { // args ','? &')'
16307         if (p->error_indicator) {
16308             p->level--;
16309             return NULL;
16310         }
16311         D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
16312         void *_opt_var;
16313         UNUSED(_opt_var); // Silence compiler warnings
16314         expr_ty a;
16315         if (
16316             (a = args_rule(p))  // args
16317             &&
16318             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16319             &&
16320             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
16321         )
16322         {
16323             D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
16324             _res = a;
16325             if (_res == NULL && PyErr_Occurred()) {
16326                 p->error_indicator = 1;
16327                 p->level--;
16328                 return NULL;
16329             }
16330             goto done;
16331         }
16332         p->mark = _mark;
16333         D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
16334                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
16335     }
16336     if (p->call_invalid_rules) { // invalid_arguments
16337         if (p->error_indicator) {
16338             p->level--;
16339             return NULL;
16340         }
16341         D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
16342         void *invalid_arguments_var;
16343         if (
16344             (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
16345         )
16346         {
16347             D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
16348             _res = invalid_arguments_var;
16349             goto done;
16350         }
16351         p->mark = _mark;
16352         D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
16353                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
16354     }
16355     _res = NULL;
16356   done:
16357     _PyPegen_insert_memo(p, _mark, arguments_type, _res);
16358     p->level--;
16359     return _res;
16360 }
16361 
16362 // args:
16363 //     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
16364 //     | kwargs
16365 static expr_ty
args_rule(Parser * p)16366 args_rule(Parser *p)
16367 {
16368     if (p->level++ == MAXSTACK) {
16369         p->error_indicator = 1;
16370         PyErr_NoMemory();
16371     }
16372     if (p->error_indicator) {
16373         p->level--;
16374         return NULL;
16375     }
16376     expr_ty _res = NULL;
16377     int _mark = p->mark;
16378     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16379         p->error_indicator = 1;
16380         p->level--;
16381         return NULL;
16382     }
16383     int _start_lineno = p->tokens[_mark]->lineno;
16384     UNUSED(_start_lineno); // Only used by EXTRA macro
16385     int _start_col_offset = p->tokens[_mark]->col_offset;
16386     UNUSED(_start_col_offset); // Only used by EXTRA macro
16387     { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
16388         if (p->error_indicator) {
16389             p->level--;
16390             return NULL;
16391         }
16392         D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
16393         asdl_expr_seq* a;
16394         void *b;
16395         if (
16396             (a = (asdl_expr_seq*)_gather_123_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
16397             &&
16398             (b = _tmp_125_rule(p), !p->error_indicator)  // [',' kwargs]
16399         )
16400         {
16401             D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
16402             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16403             if (_token == NULL) {
16404                 p->level--;
16405                 return NULL;
16406             }
16407             int _end_lineno = _token->end_lineno;
16408             UNUSED(_end_lineno); // Only used by EXTRA macro
16409             int _end_col_offset = _token->end_col_offset;
16410             UNUSED(_end_col_offset); // Only used by EXTRA macro
16411             _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
16412             if (_res == NULL && PyErr_Occurred()) {
16413                 p->error_indicator = 1;
16414                 p->level--;
16415                 return NULL;
16416             }
16417             goto done;
16418         }
16419         p->mark = _mark;
16420         D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
16421                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
16422     }
16423     { // kwargs
16424         if (p->error_indicator) {
16425             p->level--;
16426             return NULL;
16427         }
16428         D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
16429         asdl_seq* a;
16430         if (
16431             (a = kwargs_rule(p))  // kwargs
16432         )
16433         {
16434             D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
16435             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16436             if (_token == NULL) {
16437                 p->level--;
16438                 return NULL;
16439             }
16440             int _end_lineno = _token->end_lineno;
16441             UNUSED(_end_lineno); // Only used by EXTRA macro
16442             int _end_col_offset = _token->end_col_offset;
16443             UNUSED(_end_col_offset); // Only used by EXTRA macro
16444             _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 );
16445             if (_res == NULL && PyErr_Occurred()) {
16446                 p->error_indicator = 1;
16447                 p->level--;
16448                 return NULL;
16449             }
16450             goto done;
16451         }
16452         p->mark = _mark;
16453         D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
16454                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
16455     }
16456     _res = NULL;
16457   done:
16458     p->level--;
16459     return _res;
16460 }
16461 
16462 // kwargs:
16463 //     | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
16464 //     | ','.kwarg_or_starred+
16465 //     | ','.kwarg_or_double_starred+
16466 static asdl_seq*
kwargs_rule(Parser * p)16467 kwargs_rule(Parser *p)
16468 {
16469     if (p->level++ == MAXSTACK) {
16470         p->error_indicator = 1;
16471         PyErr_NoMemory();
16472     }
16473     if (p->error_indicator) {
16474         p->level--;
16475         return NULL;
16476     }
16477     asdl_seq* _res = NULL;
16478     int _mark = p->mark;
16479     { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
16480         if (p->error_indicator) {
16481             p->level--;
16482             return NULL;
16483         }
16484         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
16485         Token * _literal;
16486         asdl_seq * a;
16487         asdl_seq * b;
16488         if (
16489             (a = _gather_126_rule(p))  // ','.kwarg_or_starred+
16490             &&
16491             (_literal = _PyPegen_expect_token(p, 12))  // token=','
16492             &&
16493             (b = _gather_128_rule(p))  // ','.kwarg_or_double_starred+
16494         )
16495         {
16496             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
16497             _res = _PyPegen_join_sequences ( p , a , b );
16498             if (_res == NULL && PyErr_Occurred()) {
16499                 p->error_indicator = 1;
16500                 p->level--;
16501                 return NULL;
16502             }
16503             goto done;
16504         }
16505         p->mark = _mark;
16506         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
16507                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
16508     }
16509     { // ','.kwarg_or_starred+
16510         if (p->error_indicator) {
16511             p->level--;
16512             return NULL;
16513         }
16514         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
16515         asdl_seq * _gather_130_var;
16516         if (
16517             (_gather_130_var = _gather_130_rule(p))  // ','.kwarg_or_starred+
16518         )
16519         {
16520             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
16521             _res = _gather_130_var;
16522             goto done;
16523         }
16524         p->mark = _mark;
16525         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
16526                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
16527     }
16528     { // ','.kwarg_or_double_starred+
16529         if (p->error_indicator) {
16530             p->level--;
16531             return NULL;
16532         }
16533         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
16534         asdl_seq * _gather_132_var;
16535         if (
16536             (_gather_132_var = _gather_132_rule(p))  // ','.kwarg_or_double_starred+
16537         )
16538         {
16539             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
16540             _res = _gather_132_var;
16541             goto done;
16542         }
16543         p->mark = _mark;
16544         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
16545                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
16546     }
16547     _res = NULL;
16548   done:
16549     p->level--;
16550     return _res;
16551 }
16552 
16553 // starred_expression: '*' expression
16554 static expr_ty
starred_expression_rule(Parser * p)16555 starred_expression_rule(Parser *p)
16556 {
16557     if (p->level++ == MAXSTACK) {
16558         p->error_indicator = 1;
16559         PyErr_NoMemory();
16560     }
16561     if (p->error_indicator) {
16562         p->level--;
16563         return NULL;
16564     }
16565     expr_ty _res = NULL;
16566     int _mark = p->mark;
16567     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16568         p->error_indicator = 1;
16569         p->level--;
16570         return NULL;
16571     }
16572     int _start_lineno = p->tokens[_mark]->lineno;
16573     UNUSED(_start_lineno); // Only used by EXTRA macro
16574     int _start_col_offset = p->tokens[_mark]->col_offset;
16575     UNUSED(_start_col_offset); // Only used by EXTRA macro
16576     { // '*' expression
16577         if (p->error_indicator) {
16578             p->level--;
16579             return NULL;
16580         }
16581         D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
16582         Token * _literal;
16583         expr_ty a;
16584         if (
16585             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
16586             &&
16587             (a = expression_rule(p))  // expression
16588         )
16589         {
16590             D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
16591             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16592             if (_token == NULL) {
16593                 p->level--;
16594                 return NULL;
16595             }
16596             int _end_lineno = _token->end_lineno;
16597             UNUSED(_end_lineno); // Only used by EXTRA macro
16598             int _end_col_offset = _token->end_col_offset;
16599             UNUSED(_end_col_offset); // Only used by EXTRA macro
16600             _res = _PyAST_Starred ( a , Load , EXTRA );
16601             if (_res == NULL && PyErr_Occurred()) {
16602                 p->error_indicator = 1;
16603                 p->level--;
16604                 return NULL;
16605             }
16606             goto done;
16607         }
16608         p->mark = _mark;
16609         D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
16610                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
16611     }
16612     _res = NULL;
16613   done:
16614     p->level--;
16615     return _res;
16616 }
16617 
16618 // kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
16619 static KeywordOrStarred*
kwarg_or_starred_rule(Parser * p)16620 kwarg_or_starred_rule(Parser *p)
16621 {
16622     if (p->level++ == MAXSTACK) {
16623         p->error_indicator = 1;
16624         PyErr_NoMemory();
16625     }
16626     if (p->error_indicator) {
16627         p->level--;
16628         return NULL;
16629     }
16630     KeywordOrStarred* _res = NULL;
16631     int _mark = p->mark;
16632     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16633         p->error_indicator = 1;
16634         p->level--;
16635         return NULL;
16636     }
16637     int _start_lineno = p->tokens[_mark]->lineno;
16638     UNUSED(_start_lineno); // Only used by EXTRA macro
16639     int _start_col_offset = p->tokens[_mark]->col_offset;
16640     UNUSED(_start_col_offset); // Only used by EXTRA macro
16641     if (p->call_invalid_rules) { // invalid_kwarg
16642         if (p->error_indicator) {
16643             p->level--;
16644             return NULL;
16645         }
16646         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16647         void *invalid_kwarg_var;
16648         if (
16649             (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
16650         )
16651         {
16652             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16653             _res = invalid_kwarg_var;
16654             goto done;
16655         }
16656         p->mark = _mark;
16657         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16658                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
16659     }
16660     { // NAME '=' expression
16661         if (p->error_indicator) {
16662             p->level--;
16663             return NULL;
16664         }
16665         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16666         Token * _literal;
16667         expr_ty a;
16668         expr_ty b;
16669         if (
16670             (a = _PyPegen_name_token(p))  // NAME
16671             &&
16672             (_literal = _PyPegen_expect_token(p, 22))  // token='='
16673             &&
16674             (b = expression_rule(p))  // expression
16675         )
16676         {
16677             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16678             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16679             if (_token == NULL) {
16680                 p->level--;
16681                 return NULL;
16682             }
16683             int _end_lineno = _token->end_lineno;
16684             UNUSED(_end_lineno); // Only used by EXTRA macro
16685             int _end_col_offset = _token->end_col_offset;
16686             UNUSED(_end_col_offset); // Only used by EXTRA macro
16687             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
16688             if (_res == NULL && PyErr_Occurred()) {
16689                 p->error_indicator = 1;
16690                 p->level--;
16691                 return NULL;
16692             }
16693             goto done;
16694         }
16695         p->mark = _mark;
16696         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16697                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
16698     }
16699     { // starred_expression
16700         if (p->error_indicator) {
16701             p->level--;
16702             return NULL;
16703         }
16704         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
16705         expr_ty a;
16706         if (
16707             (a = starred_expression_rule(p))  // starred_expression
16708         )
16709         {
16710             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
16711             _res = _PyPegen_keyword_or_starred ( p , a , 0 );
16712             if (_res == NULL && PyErr_Occurred()) {
16713                 p->error_indicator = 1;
16714                 p->level--;
16715                 return NULL;
16716             }
16717             goto done;
16718         }
16719         p->mark = _mark;
16720         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16721                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
16722     }
16723     _res = NULL;
16724   done:
16725     p->level--;
16726     return _res;
16727 }
16728 
16729 // kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
16730 static KeywordOrStarred*
kwarg_or_double_starred_rule(Parser * p)16731 kwarg_or_double_starred_rule(Parser *p)
16732 {
16733     if (p->level++ == MAXSTACK) {
16734         p->error_indicator = 1;
16735         PyErr_NoMemory();
16736     }
16737     if (p->error_indicator) {
16738         p->level--;
16739         return NULL;
16740     }
16741     KeywordOrStarred* _res = NULL;
16742     int _mark = p->mark;
16743     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16744         p->error_indicator = 1;
16745         p->level--;
16746         return NULL;
16747     }
16748     int _start_lineno = p->tokens[_mark]->lineno;
16749     UNUSED(_start_lineno); // Only used by EXTRA macro
16750     int _start_col_offset = p->tokens[_mark]->col_offset;
16751     UNUSED(_start_col_offset); // Only used by EXTRA macro
16752     if (p->call_invalid_rules) { // invalid_kwarg
16753         if (p->error_indicator) {
16754             p->level--;
16755             return NULL;
16756         }
16757         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16758         void *invalid_kwarg_var;
16759         if (
16760             (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
16761         )
16762         {
16763             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16764             _res = invalid_kwarg_var;
16765             goto done;
16766         }
16767         p->mark = _mark;
16768         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
16769                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
16770     }
16771     { // NAME '=' expression
16772         if (p->error_indicator) {
16773             p->level--;
16774             return NULL;
16775         }
16776         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16777         Token * _literal;
16778         expr_ty a;
16779         expr_ty b;
16780         if (
16781             (a = _PyPegen_name_token(p))  // NAME
16782             &&
16783             (_literal = _PyPegen_expect_token(p, 22))  // token='='
16784             &&
16785             (b = expression_rule(p))  // expression
16786         )
16787         {
16788             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16789             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16790             if (_token == NULL) {
16791                 p->level--;
16792                 return NULL;
16793             }
16794             int _end_lineno = _token->end_lineno;
16795             UNUSED(_end_lineno); // Only used by EXTRA macro
16796             int _end_col_offset = _token->end_col_offset;
16797             UNUSED(_end_col_offset); // Only used by EXTRA macro
16798             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
16799             if (_res == NULL && PyErr_Occurred()) {
16800                 p->error_indicator = 1;
16801                 p->level--;
16802                 return NULL;
16803             }
16804             goto done;
16805         }
16806         p->mark = _mark;
16807         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
16808                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
16809     }
16810     { // '**' expression
16811         if (p->error_indicator) {
16812             p->level--;
16813             return NULL;
16814         }
16815         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
16816         Token * _literal;
16817         expr_ty a;
16818         if (
16819             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
16820             &&
16821             (a = expression_rule(p))  // expression
16822         )
16823         {
16824             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
16825             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16826             if (_token == NULL) {
16827                 p->level--;
16828                 return NULL;
16829             }
16830             int _end_lineno = _token->end_lineno;
16831             UNUSED(_end_lineno); // Only used by EXTRA macro
16832             int _end_col_offset = _token->end_col_offset;
16833             UNUSED(_end_col_offset); // Only used by EXTRA macro
16834             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
16835             if (_res == NULL && PyErr_Occurred()) {
16836                 p->error_indicator = 1;
16837                 p->level--;
16838                 return NULL;
16839             }
16840             goto done;
16841         }
16842         p->mark = _mark;
16843         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
16844                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
16845     }
16846     _res = NULL;
16847   done:
16848     p->level--;
16849     return _res;
16850 }
16851 
16852 // star_targets: star_target !',' | star_target ((',' star_target))* ','?
16853 static expr_ty
star_targets_rule(Parser * p)16854 star_targets_rule(Parser *p)
16855 {
16856     if (p->level++ == MAXSTACK) {
16857         p->error_indicator = 1;
16858         PyErr_NoMemory();
16859     }
16860     if (p->error_indicator) {
16861         p->level--;
16862         return NULL;
16863     }
16864     expr_ty _res = NULL;
16865     int _mark = p->mark;
16866     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16867         p->error_indicator = 1;
16868         p->level--;
16869         return NULL;
16870     }
16871     int _start_lineno = p->tokens[_mark]->lineno;
16872     UNUSED(_start_lineno); // Only used by EXTRA macro
16873     int _start_col_offset = p->tokens[_mark]->col_offset;
16874     UNUSED(_start_col_offset); // Only used by EXTRA macro
16875     { // star_target !','
16876         if (p->error_indicator) {
16877             p->level--;
16878             return NULL;
16879         }
16880         D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
16881         expr_ty a;
16882         if (
16883             (a = star_target_rule(p))  // star_target
16884             &&
16885             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
16886         )
16887         {
16888             D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
16889             _res = a;
16890             if (_res == NULL && PyErr_Occurred()) {
16891                 p->error_indicator = 1;
16892                 p->level--;
16893                 return NULL;
16894             }
16895             goto done;
16896         }
16897         p->mark = _mark;
16898         D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
16899                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
16900     }
16901     { // star_target ((',' star_target))* ','?
16902         if (p->error_indicator) {
16903             p->level--;
16904             return NULL;
16905         }
16906         D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
16907         void *_opt_var;
16908         UNUSED(_opt_var); // Silence compiler warnings
16909         expr_ty a;
16910         asdl_seq * b;
16911         if (
16912             (a = star_target_rule(p))  // star_target
16913             &&
16914             (b = _loop0_134_rule(p))  // ((',' star_target))*
16915             &&
16916             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16917         )
16918         {
16919             D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
16920             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16921             if (_token == NULL) {
16922                 p->level--;
16923                 return NULL;
16924             }
16925             int _end_lineno = _token->end_lineno;
16926             UNUSED(_end_lineno); // Only used by EXTRA macro
16927             int _end_col_offset = _token->end_col_offset;
16928             UNUSED(_end_col_offset); // Only used by EXTRA macro
16929             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
16930             if (_res == NULL && PyErr_Occurred()) {
16931                 p->error_indicator = 1;
16932                 p->level--;
16933                 return NULL;
16934             }
16935             goto done;
16936         }
16937         p->mark = _mark;
16938         D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
16939                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
16940     }
16941     _res = NULL;
16942   done:
16943     p->level--;
16944     return _res;
16945 }
16946 
16947 // star_targets_list_seq: ','.star_target+ ','?
16948 static asdl_expr_seq*
star_targets_list_seq_rule(Parser * p)16949 star_targets_list_seq_rule(Parser *p)
16950 {
16951     if (p->level++ == MAXSTACK) {
16952         p->error_indicator = 1;
16953         PyErr_NoMemory();
16954     }
16955     if (p->error_indicator) {
16956         p->level--;
16957         return NULL;
16958     }
16959     asdl_expr_seq* _res = NULL;
16960     int _mark = p->mark;
16961     { // ','.star_target+ ','?
16962         if (p->error_indicator) {
16963             p->level--;
16964             return NULL;
16965         }
16966         D(fprintf(stderr, "%*c> star_targets_list_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
16967         void *_opt_var;
16968         UNUSED(_opt_var); // Silence compiler warnings
16969         asdl_expr_seq* a;
16970         if (
16971             (a = (asdl_expr_seq*)_gather_135_rule(p))  // ','.star_target+
16972             &&
16973             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16974         )
16975         {
16976             D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
16977             _res = a;
16978             if (_res == NULL && PyErr_Occurred()) {
16979                 p->error_indicator = 1;
16980                 p->level--;
16981                 return NULL;
16982             }
16983             goto done;
16984         }
16985         p->mark = _mark;
16986         D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
16987                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
16988     }
16989     _res = NULL;
16990   done:
16991     p->level--;
16992     return _res;
16993 }
16994 
16995 // star_targets_tuple_seq: star_target ((',' star_target))+ ','? | star_target ','
16996 static asdl_expr_seq*
star_targets_tuple_seq_rule(Parser * p)16997 star_targets_tuple_seq_rule(Parser *p)
16998 {
16999     if (p->level++ == MAXSTACK) {
17000         p->error_indicator = 1;
17001         PyErr_NoMemory();
17002     }
17003     if (p->error_indicator) {
17004         p->level--;
17005         return NULL;
17006     }
17007     asdl_expr_seq* _res = NULL;
17008     int _mark = p->mark;
17009     { // star_target ((',' star_target))+ ','?
17010         if (p->error_indicator) {
17011             p->level--;
17012             return NULL;
17013         }
17014         D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
17015         void *_opt_var;
17016         UNUSED(_opt_var); // Silence compiler warnings
17017         expr_ty a;
17018         asdl_seq * b;
17019         if (
17020             (a = star_target_rule(p))  // star_target
17021             &&
17022             (b = _loop1_137_rule(p))  // ((',' star_target))+
17023             &&
17024             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17025         )
17026         {
17027             D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
17028             _res = ( asdl_expr_seq * ) _PyPegen_seq_insert_in_front ( p , a , b );
17029             if (_res == NULL && PyErr_Occurred()) {
17030                 p->error_indicator = 1;
17031                 p->level--;
17032                 return NULL;
17033             }
17034             goto done;
17035         }
17036         p->mark = _mark;
17037         D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
17038                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))+ ','?"));
17039     }
17040     { // star_target ','
17041         if (p->error_indicator) {
17042             p->level--;
17043             return NULL;
17044         }
17045         D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ','"));
17046         Token * _literal;
17047         expr_ty a;
17048         if (
17049             (a = star_target_rule(p))  // star_target
17050             &&
17051             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17052         )
17053         {
17054             D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ','"));
17055             _res = ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , a );
17056             if (_res == NULL && PyErr_Occurred()) {
17057                 p->error_indicator = 1;
17058                 p->level--;
17059                 return NULL;
17060             }
17061             goto done;
17062         }
17063         p->mark = _mark;
17064         D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
17065                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
17066     }
17067     _res = NULL;
17068   done:
17069     p->level--;
17070     return _res;
17071 }
17072 
17073 // star_target: '*' (!'*' star_target) | target_with_star_atom
17074 static expr_ty
star_target_rule(Parser * p)17075 star_target_rule(Parser *p)
17076 {
17077     if (p->level++ == MAXSTACK) {
17078         p->error_indicator = 1;
17079         PyErr_NoMemory();
17080     }
17081     if (p->error_indicator) {
17082         p->level--;
17083         return NULL;
17084     }
17085     expr_ty _res = NULL;
17086     if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
17087         p->level--;
17088         return _res;
17089     }
17090     int _mark = p->mark;
17091     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17092         p->error_indicator = 1;
17093         p->level--;
17094         return NULL;
17095     }
17096     int _start_lineno = p->tokens[_mark]->lineno;
17097     UNUSED(_start_lineno); // Only used by EXTRA macro
17098     int _start_col_offset = p->tokens[_mark]->col_offset;
17099     UNUSED(_start_col_offset); // Only used by EXTRA macro
17100     { // '*' (!'*' star_target)
17101         if (p->error_indicator) {
17102             p->level--;
17103             return NULL;
17104         }
17105         D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
17106         Token * _literal;
17107         void *a;
17108         if (
17109             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
17110             &&
17111             (a = _tmp_138_rule(p))  // !'*' star_target
17112         )
17113         {
17114             D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
17115             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17116             if (_token == NULL) {
17117                 p->level--;
17118                 return NULL;
17119             }
17120             int _end_lineno = _token->end_lineno;
17121             UNUSED(_end_lineno); // Only used by EXTRA macro
17122             int _end_col_offset = _token->end_col_offset;
17123             UNUSED(_end_col_offset); // Only used by EXTRA macro
17124             _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
17125             if (_res == NULL && PyErr_Occurred()) {
17126                 p->error_indicator = 1;
17127                 p->level--;
17128                 return NULL;
17129             }
17130             goto done;
17131         }
17132         p->mark = _mark;
17133         D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
17134                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
17135     }
17136     { // target_with_star_atom
17137         if (p->error_indicator) {
17138             p->level--;
17139             return NULL;
17140         }
17141         D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
17142         expr_ty target_with_star_atom_var;
17143         if (
17144             (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
17145         )
17146         {
17147             D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
17148             _res = target_with_star_atom_var;
17149             goto done;
17150         }
17151         p->mark = _mark;
17152         D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
17153                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
17154     }
17155     _res = NULL;
17156   done:
17157     _PyPegen_insert_memo(p, _mark, star_target_type, _res);
17158     p->level--;
17159     return _res;
17160 }
17161 
17162 // target_with_star_atom:
17163 //     | t_primary '.' NAME !t_lookahead
17164 //     | t_primary '[' slices ']' !t_lookahead
17165 //     | star_atom
17166 static expr_ty
target_with_star_atom_rule(Parser * p)17167 target_with_star_atom_rule(Parser *p)
17168 {
17169     if (p->level++ == MAXSTACK) {
17170         p->error_indicator = 1;
17171         PyErr_NoMemory();
17172     }
17173     if (p->error_indicator) {
17174         p->level--;
17175         return NULL;
17176     }
17177     expr_ty _res = NULL;
17178     if (_PyPegen_is_memoized(p, target_with_star_atom_type, &_res)) {
17179         p->level--;
17180         return _res;
17181     }
17182     int _mark = p->mark;
17183     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17184         p->error_indicator = 1;
17185         p->level--;
17186         return NULL;
17187     }
17188     int _start_lineno = p->tokens[_mark]->lineno;
17189     UNUSED(_start_lineno); // Only used by EXTRA macro
17190     int _start_col_offset = p->tokens[_mark]->col_offset;
17191     UNUSED(_start_col_offset); // Only used by EXTRA macro
17192     { // t_primary '.' NAME !t_lookahead
17193         if (p->error_indicator) {
17194             p->level--;
17195             return NULL;
17196         }
17197         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17198         Token * _literal;
17199         expr_ty a;
17200         expr_ty b;
17201         if (
17202             (a = t_primary_rule(p))  // t_primary
17203             &&
17204             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17205             &&
17206             (b = _PyPegen_name_token(p))  // NAME
17207             &&
17208             _PyPegen_lookahead(0, t_lookahead_rule, p)
17209         )
17210         {
17211             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17212             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17213             if (_token == NULL) {
17214                 p->level--;
17215                 return NULL;
17216             }
17217             int _end_lineno = _token->end_lineno;
17218             UNUSED(_end_lineno); // Only used by EXTRA macro
17219             int _end_col_offset = _token->end_col_offset;
17220             UNUSED(_end_col_offset); // Only used by EXTRA macro
17221             _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
17222             if (_res == NULL && PyErr_Occurred()) {
17223                 p->error_indicator = 1;
17224                 p->level--;
17225                 return NULL;
17226             }
17227             goto done;
17228         }
17229         p->mark = _mark;
17230         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17231                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17232     }
17233     { // t_primary '[' slices ']' !t_lookahead
17234         if (p->error_indicator) {
17235             p->level--;
17236             return NULL;
17237         }
17238         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17239         Token * _literal;
17240         Token * _literal_1;
17241         expr_ty a;
17242         expr_ty b;
17243         if (
17244             (a = t_primary_rule(p))  // t_primary
17245             &&
17246             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17247             &&
17248             (b = slices_rule(p))  // slices
17249             &&
17250             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17251             &&
17252             _PyPegen_lookahead(0, t_lookahead_rule, p)
17253         )
17254         {
17255             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17256             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17257             if (_token == NULL) {
17258                 p->level--;
17259                 return NULL;
17260             }
17261             int _end_lineno = _token->end_lineno;
17262             UNUSED(_end_lineno); // Only used by EXTRA macro
17263             int _end_col_offset = _token->end_col_offset;
17264             UNUSED(_end_col_offset); // Only used by EXTRA macro
17265             _res = _PyAST_Subscript ( a , b , Store , EXTRA );
17266             if (_res == NULL && PyErr_Occurred()) {
17267                 p->error_indicator = 1;
17268                 p->level--;
17269                 return NULL;
17270             }
17271             goto done;
17272         }
17273         p->mark = _mark;
17274         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17275                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17276     }
17277     { // star_atom
17278         if (p->error_indicator) {
17279             p->level--;
17280             return NULL;
17281         }
17282         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
17283         expr_ty star_atom_var;
17284         if (
17285             (star_atom_var = star_atom_rule(p))  // star_atom
17286         )
17287         {
17288             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
17289             _res = star_atom_var;
17290             goto done;
17291         }
17292         p->mark = _mark;
17293         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17294                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
17295     }
17296     _res = NULL;
17297   done:
17298     _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
17299     p->level--;
17300     return _res;
17301 }
17302 
17303 // star_atom:
17304 //     | NAME
17305 //     | '(' target_with_star_atom ')'
17306 //     | '(' star_targets_tuple_seq? ')'
17307 //     | '[' star_targets_list_seq? ']'
17308 static expr_ty
star_atom_rule(Parser * p)17309 star_atom_rule(Parser *p)
17310 {
17311     if (p->level++ == MAXSTACK) {
17312         p->error_indicator = 1;
17313         PyErr_NoMemory();
17314     }
17315     if (p->error_indicator) {
17316         p->level--;
17317         return NULL;
17318     }
17319     expr_ty _res = NULL;
17320     int _mark = p->mark;
17321     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17322         p->error_indicator = 1;
17323         p->level--;
17324         return NULL;
17325     }
17326     int _start_lineno = p->tokens[_mark]->lineno;
17327     UNUSED(_start_lineno); // Only used by EXTRA macro
17328     int _start_col_offset = p->tokens[_mark]->col_offset;
17329     UNUSED(_start_col_offset); // Only used by EXTRA macro
17330     { // NAME
17331         if (p->error_indicator) {
17332             p->level--;
17333             return NULL;
17334         }
17335         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
17336         expr_ty a;
17337         if (
17338             (a = _PyPegen_name_token(p))  // NAME
17339         )
17340         {
17341             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
17342             _res = _PyPegen_set_expr_context ( p , a , Store );
17343             if (_res == NULL && PyErr_Occurred()) {
17344                 p->error_indicator = 1;
17345                 p->level--;
17346                 return NULL;
17347             }
17348             goto done;
17349         }
17350         p->mark = _mark;
17351         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17352                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
17353     }
17354     { // '(' target_with_star_atom ')'
17355         if (p->error_indicator) {
17356             p->level--;
17357             return NULL;
17358         }
17359         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
17360         Token * _literal;
17361         Token * _literal_1;
17362         expr_ty a;
17363         if (
17364             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17365             &&
17366             (a = target_with_star_atom_rule(p))  // target_with_star_atom
17367             &&
17368             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17369         )
17370         {
17371             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
17372             _res = _PyPegen_set_expr_context ( p , a , Store );
17373             if (_res == NULL && PyErr_Occurred()) {
17374                 p->error_indicator = 1;
17375                 p->level--;
17376                 return NULL;
17377             }
17378             goto done;
17379         }
17380         p->mark = _mark;
17381         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17382                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
17383     }
17384     { // '(' star_targets_tuple_seq? ')'
17385         if (p->error_indicator) {
17386             p->level--;
17387             return NULL;
17388         }
17389         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
17390         Token * _literal;
17391         Token * _literal_1;
17392         void *a;
17393         if (
17394             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17395             &&
17396             (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
17397             &&
17398             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17399         )
17400         {
17401             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
17402             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17403             if (_token == NULL) {
17404                 p->level--;
17405                 return NULL;
17406             }
17407             int _end_lineno = _token->end_lineno;
17408             UNUSED(_end_lineno); // Only used by EXTRA macro
17409             int _end_col_offset = _token->end_col_offset;
17410             UNUSED(_end_col_offset); // Only used by EXTRA macro
17411             _res = _PyAST_Tuple ( a , Store , EXTRA );
17412             if (_res == NULL && PyErr_Occurred()) {
17413                 p->error_indicator = 1;
17414                 p->level--;
17415                 return NULL;
17416             }
17417             goto done;
17418         }
17419         p->mark = _mark;
17420         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17421                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
17422     }
17423     { // '[' star_targets_list_seq? ']'
17424         if (p->error_indicator) {
17425             p->level--;
17426             return NULL;
17427         }
17428         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
17429         Token * _literal;
17430         Token * _literal_1;
17431         void *a;
17432         if (
17433             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17434             &&
17435             (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
17436             &&
17437             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17438         )
17439         {
17440             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
17441             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17442             if (_token == NULL) {
17443                 p->level--;
17444                 return NULL;
17445             }
17446             int _end_lineno = _token->end_lineno;
17447             UNUSED(_end_lineno); // Only used by EXTRA macro
17448             int _end_col_offset = _token->end_col_offset;
17449             UNUSED(_end_col_offset); // Only used by EXTRA macro
17450             _res = _PyAST_List ( a , Store , EXTRA );
17451             if (_res == NULL && PyErr_Occurred()) {
17452                 p->error_indicator = 1;
17453                 p->level--;
17454                 return NULL;
17455             }
17456             goto done;
17457         }
17458         p->mark = _mark;
17459         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17460                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
17461     }
17462     _res = NULL;
17463   done:
17464     p->level--;
17465     return _res;
17466 }
17467 
17468 // single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
17469 static expr_ty
single_target_rule(Parser * p)17470 single_target_rule(Parser *p)
17471 {
17472     if (p->level++ == MAXSTACK) {
17473         p->error_indicator = 1;
17474         PyErr_NoMemory();
17475     }
17476     if (p->error_indicator) {
17477         p->level--;
17478         return NULL;
17479     }
17480     expr_ty _res = NULL;
17481     int _mark = p->mark;
17482     { // single_subscript_attribute_target
17483         if (p->error_indicator) {
17484             p->level--;
17485             return NULL;
17486         }
17487         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
17488         expr_ty single_subscript_attribute_target_var;
17489         if (
17490             (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
17491         )
17492         {
17493             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
17494             _res = single_subscript_attribute_target_var;
17495             goto done;
17496         }
17497         p->mark = _mark;
17498         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
17499                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
17500     }
17501     { // NAME
17502         if (p->error_indicator) {
17503             p->level--;
17504             return NULL;
17505         }
17506         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
17507         expr_ty a;
17508         if (
17509             (a = _PyPegen_name_token(p))  // NAME
17510         )
17511         {
17512             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
17513             _res = _PyPegen_set_expr_context ( p , a , Store );
17514             if (_res == NULL && PyErr_Occurred()) {
17515                 p->error_indicator = 1;
17516                 p->level--;
17517                 return NULL;
17518             }
17519             goto done;
17520         }
17521         p->mark = _mark;
17522         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
17523                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
17524     }
17525     { // '(' single_target ')'
17526         if (p->error_indicator) {
17527             p->level--;
17528             return NULL;
17529         }
17530         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
17531         Token * _literal;
17532         Token * _literal_1;
17533         expr_ty a;
17534         if (
17535             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17536             &&
17537             (a = single_target_rule(p))  // single_target
17538             &&
17539             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17540         )
17541         {
17542             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
17543             _res = a;
17544             if (_res == NULL && PyErr_Occurred()) {
17545                 p->error_indicator = 1;
17546                 p->level--;
17547                 return NULL;
17548             }
17549             goto done;
17550         }
17551         p->mark = _mark;
17552         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
17553                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
17554     }
17555     _res = NULL;
17556   done:
17557     p->level--;
17558     return _res;
17559 }
17560 
17561 // single_subscript_attribute_target:
17562 //     | t_primary '.' NAME !t_lookahead
17563 //     | t_primary '[' slices ']' !t_lookahead
17564 static expr_ty
single_subscript_attribute_target_rule(Parser * p)17565 single_subscript_attribute_target_rule(Parser *p)
17566 {
17567     if (p->level++ == MAXSTACK) {
17568         p->error_indicator = 1;
17569         PyErr_NoMemory();
17570     }
17571     if (p->error_indicator) {
17572         p->level--;
17573         return NULL;
17574     }
17575     expr_ty _res = NULL;
17576     int _mark = p->mark;
17577     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17578         p->error_indicator = 1;
17579         p->level--;
17580         return NULL;
17581     }
17582     int _start_lineno = p->tokens[_mark]->lineno;
17583     UNUSED(_start_lineno); // Only used by EXTRA macro
17584     int _start_col_offset = p->tokens[_mark]->col_offset;
17585     UNUSED(_start_col_offset); // Only used by EXTRA macro
17586     { // t_primary '.' NAME !t_lookahead
17587         if (p->error_indicator) {
17588             p->level--;
17589             return NULL;
17590         }
17591         D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17592         Token * _literal;
17593         expr_ty a;
17594         expr_ty b;
17595         if (
17596             (a = t_primary_rule(p))  // t_primary
17597             &&
17598             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17599             &&
17600             (b = _PyPegen_name_token(p))  // NAME
17601             &&
17602             _PyPegen_lookahead(0, t_lookahead_rule, p)
17603         )
17604         {
17605             D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17606             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17607             if (_token == NULL) {
17608                 p->level--;
17609                 return NULL;
17610             }
17611             int _end_lineno = _token->end_lineno;
17612             UNUSED(_end_lineno); // Only used by EXTRA macro
17613             int _end_col_offset = _token->end_col_offset;
17614             UNUSED(_end_col_offset); // Only used by EXTRA macro
17615             _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
17616             if (_res == NULL && PyErr_Occurred()) {
17617                 p->error_indicator = 1;
17618                 p->level--;
17619                 return NULL;
17620             }
17621             goto done;
17622         }
17623         p->mark = _mark;
17624         D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
17625                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17626     }
17627     { // t_primary '[' slices ']' !t_lookahead
17628         if (p->error_indicator) {
17629             p->level--;
17630             return NULL;
17631         }
17632         D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17633         Token * _literal;
17634         Token * _literal_1;
17635         expr_ty a;
17636         expr_ty b;
17637         if (
17638             (a = t_primary_rule(p))  // t_primary
17639             &&
17640             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17641             &&
17642             (b = slices_rule(p))  // slices
17643             &&
17644             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17645             &&
17646             _PyPegen_lookahead(0, t_lookahead_rule, p)
17647         )
17648         {
17649             D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17650             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17651             if (_token == NULL) {
17652                 p->level--;
17653                 return NULL;
17654             }
17655             int _end_lineno = _token->end_lineno;
17656             UNUSED(_end_lineno); // Only used by EXTRA macro
17657             int _end_col_offset = _token->end_col_offset;
17658             UNUSED(_end_col_offset); // Only used by EXTRA macro
17659             _res = _PyAST_Subscript ( a , b , Store , EXTRA );
17660             if (_res == NULL && PyErr_Occurred()) {
17661                 p->error_indicator = 1;
17662                 p->level--;
17663                 return NULL;
17664             }
17665             goto done;
17666         }
17667         p->mark = _mark;
17668         D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
17669                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17670     }
17671     _res = NULL;
17672   done:
17673     p->level--;
17674     return _res;
17675 }
17676 
17677 // del_targets: ','.del_target+ ','?
17678 static asdl_expr_seq*
del_targets_rule(Parser * p)17679 del_targets_rule(Parser *p)
17680 {
17681     if (p->level++ == MAXSTACK) {
17682         p->error_indicator = 1;
17683         PyErr_NoMemory();
17684     }
17685     if (p->error_indicator) {
17686         p->level--;
17687         return NULL;
17688     }
17689     asdl_expr_seq* _res = NULL;
17690     int _mark = p->mark;
17691     { // ','.del_target+ ','?
17692         if (p->error_indicator) {
17693             p->level--;
17694             return NULL;
17695         }
17696         D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
17697         void *_opt_var;
17698         UNUSED(_opt_var); // Silence compiler warnings
17699         asdl_expr_seq* a;
17700         if (
17701             (a = (asdl_expr_seq*)_gather_139_rule(p))  // ','.del_target+
17702             &&
17703             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17704         )
17705         {
17706             D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
17707             _res = a;
17708             if (_res == NULL && PyErr_Occurred()) {
17709                 p->error_indicator = 1;
17710                 p->level--;
17711                 return NULL;
17712             }
17713             goto done;
17714         }
17715         p->mark = _mark;
17716         D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
17717                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
17718     }
17719     _res = NULL;
17720   done:
17721     p->level--;
17722     return _res;
17723 }
17724 
17725 // del_target:
17726 //     | t_primary '.' NAME !t_lookahead
17727 //     | t_primary '[' slices ']' !t_lookahead
17728 //     | del_t_atom
17729 static expr_ty
del_target_rule(Parser * p)17730 del_target_rule(Parser *p)
17731 {
17732     if (p->level++ == MAXSTACK) {
17733         p->error_indicator = 1;
17734         PyErr_NoMemory();
17735     }
17736     if (p->error_indicator) {
17737         p->level--;
17738         return NULL;
17739     }
17740     expr_ty _res = NULL;
17741     if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
17742         p->level--;
17743         return _res;
17744     }
17745     int _mark = p->mark;
17746     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17747         p->error_indicator = 1;
17748         p->level--;
17749         return NULL;
17750     }
17751     int _start_lineno = p->tokens[_mark]->lineno;
17752     UNUSED(_start_lineno); // Only used by EXTRA macro
17753     int _start_col_offset = p->tokens[_mark]->col_offset;
17754     UNUSED(_start_col_offset); // Only used by EXTRA macro
17755     { // t_primary '.' NAME !t_lookahead
17756         if (p->error_indicator) {
17757             p->level--;
17758             return NULL;
17759         }
17760         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17761         Token * _literal;
17762         expr_ty a;
17763         expr_ty b;
17764         if (
17765             (a = t_primary_rule(p))  // t_primary
17766             &&
17767             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17768             &&
17769             (b = _PyPegen_name_token(p))  // NAME
17770             &&
17771             _PyPegen_lookahead(0, t_lookahead_rule, p)
17772         )
17773         {
17774             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17775             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17776             if (_token == NULL) {
17777                 p->level--;
17778                 return NULL;
17779             }
17780             int _end_lineno = _token->end_lineno;
17781             UNUSED(_end_lineno); // Only used by EXTRA macro
17782             int _end_col_offset = _token->end_col_offset;
17783             UNUSED(_end_col_offset); // Only used by EXTRA macro
17784             _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
17785             if (_res == NULL && PyErr_Occurred()) {
17786                 p->error_indicator = 1;
17787                 p->level--;
17788                 return NULL;
17789             }
17790             goto done;
17791         }
17792         p->mark = _mark;
17793         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17794                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17795     }
17796     { // t_primary '[' slices ']' !t_lookahead
17797         if (p->error_indicator) {
17798             p->level--;
17799             return NULL;
17800         }
17801         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17802         Token * _literal;
17803         Token * _literal_1;
17804         expr_ty a;
17805         expr_ty b;
17806         if (
17807             (a = t_primary_rule(p))  // t_primary
17808             &&
17809             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17810             &&
17811             (b = slices_rule(p))  // slices
17812             &&
17813             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17814             &&
17815             _PyPegen_lookahead(0, t_lookahead_rule, p)
17816         )
17817         {
17818             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17819             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17820             if (_token == NULL) {
17821                 p->level--;
17822                 return NULL;
17823             }
17824             int _end_lineno = _token->end_lineno;
17825             UNUSED(_end_lineno); // Only used by EXTRA macro
17826             int _end_col_offset = _token->end_col_offset;
17827             UNUSED(_end_col_offset); // Only used by EXTRA macro
17828             _res = _PyAST_Subscript ( a , b , Del , EXTRA );
17829             if (_res == NULL && PyErr_Occurred()) {
17830                 p->error_indicator = 1;
17831                 p->level--;
17832                 return NULL;
17833             }
17834             goto done;
17835         }
17836         p->mark = _mark;
17837         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17838                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17839     }
17840     { // del_t_atom
17841         if (p->error_indicator) {
17842             p->level--;
17843             return NULL;
17844         }
17845         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
17846         expr_ty del_t_atom_var;
17847         if (
17848             (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
17849         )
17850         {
17851             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
17852             _res = del_t_atom_var;
17853             goto done;
17854         }
17855         p->mark = _mark;
17856         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17857                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
17858     }
17859     _res = NULL;
17860   done:
17861     _PyPegen_insert_memo(p, _mark, del_target_type, _res);
17862     p->level--;
17863     return _res;
17864 }
17865 
17866 // del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
17867 static expr_ty
del_t_atom_rule(Parser * p)17868 del_t_atom_rule(Parser *p)
17869 {
17870     if (p->level++ == MAXSTACK) {
17871         p->error_indicator = 1;
17872         PyErr_NoMemory();
17873     }
17874     if (p->error_indicator) {
17875         p->level--;
17876         return NULL;
17877     }
17878     expr_ty _res = NULL;
17879     int _mark = p->mark;
17880     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17881         p->error_indicator = 1;
17882         p->level--;
17883         return NULL;
17884     }
17885     int _start_lineno = p->tokens[_mark]->lineno;
17886     UNUSED(_start_lineno); // Only used by EXTRA macro
17887     int _start_col_offset = p->tokens[_mark]->col_offset;
17888     UNUSED(_start_col_offset); // Only used by EXTRA macro
17889     { // NAME
17890         if (p->error_indicator) {
17891             p->level--;
17892             return NULL;
17893         }
17894         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
17895         expr_ty a;
17896         if (
17897             (a = _PyPegen_name_token(p))  // NAME
17898         )
17899         {
17900             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
17901             _res = _PyPegen_set_expr_context ( p , a , Del );
17902             if (_res == NULL && PyErr_Occurred()) {
17903                 p->error_indicator = 1;
17904                 p->level--;
17905                 return NULL;
17906             }
17907             goto done;
17908         }
17909         p->mark = _mark;
17910         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17911                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
17912     }
17913     { // '(' del_target ')'
17914         if (p->error_indicator) {
17915             p->level--;
17916             return NULL;
17917         }
17918         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
17919         Token * _literal;
17920         Token * _literal_1;
17921         expr_ty a;
17922         if (
17923             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17924             &&
17925             (a = del_target_rule(p))  // del_target
17926             &&
17927             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17928         )
17929         {
17930             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
17931             _res = _PyPegen_set_expr_context ( p , a , Del );
17932             if (_res == NULL && PyErr_Occurred()) {
17933                 p->error_indicator = 1;
17934                 p->level--;
17935                 return NULL;
17936             }
17937             goto done;
17938         }
17939         p->mark = _mark;
17940         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17941                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
17942     }
17943     { // '(' del_targets? ')'
17944         if (p->error_indicator) {
17945             p->level--;
17946             return NULL;
17947         }
17948         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
17949         Token * _literal;
17950         Token * _literal_1;
17951         void *a;
17952         if (
17953             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17954             &&
17955             (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
17956             &&
17957             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17958         )
17959         {
17960             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
17961             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17962             if (_token == NULL) {
17963                 p->level--;
17964                 return NULL;
17965             }
17966             int _end_lineno = _token->end_lineno;
17967             UNUSED(_end_lineno); // Only used by EXTRA macro
17968             int _end_col_offset = _token->end_col_offset;
17969             UNUSED(_end_col_offset); // Only used by EXTRA macro
17970             _res = _PyAST_Tuple ( a , Del , EXTRA );
17971             if (_res == NULL && PyErr_Occurred()) {
17972                 p->error_indicator = 1;
17973                 p->level--;
17974                 return NULL;
17975             }
17976             goto done;
17977         }
17978         p->mark = _mark;
17979         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17980                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
17981     }
17982     { // '[' del_targets? ']'
17983         if (p->error_indicator) {
17984             p->level--;
17985             return NULL;
17986         }
17987         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
17988         Token * _literal;
17989         Token * _literal_1;
17990         void *a;
17991         if (
17992             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17993             &&
17994             (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
17995             &&
17996             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17997         )
17998         {
17999             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
18000             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18001             if (_token == NULL) {
18002                 p->level--;
18003                 return NULL;
18004             }
18005             int _end_lineno = _token->end_lineno;
18006             UNUSED(_end_lineno); // Only used by EXTRA macro
18007             int _end_col_offset = _token->end_col_offset;
18008             UNUSED(_end_col_offset); // Only used by EXTRA macro
18009             _res = _PyAST_List ( a , Del , EXTRA );
18010             if (_res == NULL && PyErr_Occurred()) {
18011                 p->error_indicator = 1;
18012                 p->level--;
18013                 return NULL;
18014             }
18015             goto done;
18016         }
18017         p->mark = _mark;
18018         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
18019                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
18020     }
18021     _res = NULL;
18022   done:
18023     p->level--;
18024     return _res;
18025 }
18026 
18027 // Left-recursive
18028 // t_primary:
18029 //     | t_primary '.' NAME &t_lookahead
18030 //     | t_primary '[' slices ']' &t_lookahead
18031 //     | t_primary genexp &t_lookahead
18032 //     | t_primary '(' arguments? ')' &t_lookahead
18033 //     | atom &t_lookahead
18034 static expr_ty t_primary_raw(Parser *);
18035 static expr_ty
t_primary_rule(Parser * p)18036 t_primary_rule(Parser *p)
18037 {
18038     if (p->level++ == MAXSTACK) {
18039         p->error_indicator = 1;
18040         PyErr_NoMemory();
18041     }
18042     expr_ty _res = NULL;
18043     if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
18044         p->level--;
18045         return _res;
18046     }
18047     int _mark = p->mark;
18048     int _resmark = p->mark;
18049     while (1) {
18050         int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
18051         if (tmpvar_9) {
18052             p->level--;
18053             return _res;
18054         }
18055         p->mark = _mark;
18056         p->in_raw_rule++;
18057         void *_raw = t_primary_raw(p);
18058         p->in_raw_rule--;
18059         if (p->error_indicator) {
18060             p->level--;
18061             return NULL;
18062         }
18063         if (_raw == NULL || p->mark <= _resmark)
18064             break;
18065         _resmark = p->mark;
18066         _res = _raw;
18067     }
18068     p->mark = _resmark;
18069     p->level--;
18070     return _res;
18071 }
18072 static expr_ty
t_primary_raw(Parser * p)18073 t_primary_raw(Parser *p)
18074 {
18075     if (p->level++ == MAXSTACK) {
18076         p->error_indicator = 1;
18077         PyErr_NoMemory();
18078     }
18079     if (p->error_indicator) {
18080         p->level--;
18081         return NULL;
18082     }
18083     expr_ty _res = NULL;
18084     int _mark = p->mark;
18085     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18086         p->error_indicator = 1;
18087         p->level--;
18088         return NULL;
18089     }
18090     int _start_lineno = p->tokens[_mark]->lineno;
18091     UNUSED(_start_lineno); // Only used by EXTRA macro
18092     int _start_col_offset = p->tokens[_mark]->col_offset;
18093     UNUSED(_start_col_offset); // Only used by EXTRA macro
18094     { // t_primary '.' NAME &t_lookahead
18095         if (p->error_indicator) {
18096             p->level--;
18097             return NULL;
18098         }
18099         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
18100         Token * _literal;
18101         expr_ty a;
18102         expr_ty b;
18103         if (
18104             (a = t_primary_rule(p))  // t_primary
18105             &&
18106             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
18107             &&
18108             (b = _PyPegen_name_token(p))  // NAME
18109             &&
18110             _PyPegen_lookahead(1, t_lookahead_rule, p)
18111         )
18112         {
18113             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
18114             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18115             if (_token == NULL) {
18116                 p->level--;
18117                 return NULL;
18118             }
18119             int _end_lineno = _token->end_lineno;
18120             UNUSED(_end_lineno); // Only used by EXTRA macro
18121             int _end_col_offset = _token->end_col_offset;
18122             UNUSED(_end_col_offset); // Only used by EXTRA macro
18123             _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
18124             if (_res == NULL && PyErr_Occurred()) {
18125                 p->error_indicator = 1;
18126                 p->level--;
18127                 return NULL;
18128             }
18129             goto done;
18130         }
18131         p->mark = _mark;
18132         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
18134     }
18135     { // t_primary '[' slices ']' &t_lookahead
18136         if (p->error_indicator) {
18137             p->level--;
18138             return NULL;
18139         }
18140         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
18141         Token * _literal;
18142         Token * _literal_1;
18143         expr_ty a;
18144         expr_ty b;
18145         if (
18146             (a = t_primary_rule(p))  // t_primary
18147             &&
18148             (_literal = _PyPegen_expect_token(p, 9))  // token='['
18149             &&
18150             (b = slices_rule(p))  // slices
18151             &&
18152             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
18153             &&
18154             _PyPegen_lookahead(1, t_lookahead_rule, p)
18155         )
18156         {
18157             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
18158             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18159             if (_token == NULL) {
18160                 p->level--;
18161                 return NULL;
18162             }
18163             int _end_lineno = _token->end_lineno;
18164             UNUSED(_end_lineno); // Only used by EXTRA macro
18165             int _end_col_offset = _token->end_col_offset;
18166             UNUSED(_end_col_offset); // Only used by EXTRA macro
18167             _res = _PyAST_Subscript ( a , b , Load , EXTRA );
18168             if (_res == NULL && PyErr_Occurred()) {
18169                 p->error_indicator = 1;
18170                 p->level--;
18171                 return NULL;
18172             }
18173             goto done;
18174         }
18175         p->mark = _mark;
18176         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18177                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
18178     }
18179     { // t_primary genexp &t_lookahead
18180         if (p->error_indicator) {
18181             p->level--;
18182             return NULL;
18183         }
18184         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
18185         expr_ty a;
18186         expr_ty b;
18187         if (
18188             (a = t_primary_rule(p))  // t_primary
18189             &&
18190             (b = genexp_rule(p))  // genexp
18191             &&
18192             _PyPegen_lookahead(1, t_lookahead_rule, p)
18193         )
18194         {
18195             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
18196             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18197             if (_token == NULL) {
18198                 p->level--;
18199                 return NULL;
18200             }
18201             int _end_lineno = _token->end_lineno;
18202             UNUSED(_end_lineno); // Only used by EXTRA macro
18203             int _end_col_offset = _token->end_col_offset;
18204             UNUSED(_end_col_offset); // Only used by EXTRA macro
18205             _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq * , ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
18206             if (_res == NULL && PyErr_Occurred()) {
18207                 p->error_indicator = 1;
18208                 p->level--;
18209                 return NULL;
18210             }
18211             goto done;
18212         }
18213         p->mark = _mark;
18214         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18215                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
18216     }
18217     { // t_primary '(' arguments? ')' &t_lookahead
18218         if (p->error_indicator) {
18219             p->level--;
18220             return NULL;
18221         }
18222         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
18223         Token * _literal;
18224         Token * _literal_1;
18225         expr_ty a;
18226         void *b;
18227         if (
18228             (a = t_primary_rule(p))  // t_primary
18229             &&
18230             (_literal = _PyPegen_expect_token(p, 7))  // token='('
18231             &&
18232             (b = arguments_rule(p), !p->error_indicator)  // arguments?
18233             &&
18234             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18235             &&
18236             _PyPegen_lookahead(1, t_lookahead_rule, p)
18237         )
18238         {
18239             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
18240             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18241             if (_token == NULL) {
18242                 p->level--;
18243                 return NULL;
18244             }
18245             int _end_lineno = _token->end_lineno;
18246             UNUSED(_end_lineno); // Only used by EXTRA macro
18247             int _end_col_offset = _token->end_col_offset;
18248             UNUSED(_end_col_offset); // Only used by EXTRA macro
18249             _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
18250             if (_res == NULL && PyErr_Occurred()) {
18251                 p->error_indicator = 1;
18252                 p->level--;
18253                 return NULL;
18254             }
18255             goto done;
18256         }
18257         p->mark = _mark;
18258         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18259                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
18260     }
18261     { // atom &t_lookahead
18262         if (p->error_indicator) {
18263             p->level--;
18264             return NULL;
18265         }
18266         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
18267         expr_ty a;
18268         if (
18269             (a = atom_rule(p))  // atom
18270             &&
18271             _PyPegen_lookahead(1, t_lookahead_rule, p)
18272         )
18273         {
18274             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
18275             _res = a;
18276             if (_res == NULL && PyErr_Occurred()) {
18277                 p->error_indicator = 1;
18278                 p->level--;
18279                 return NULL;
18280             }
18281             goto done;
18282         }
18283         p->mark = _mark;
18284         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18285                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
18286     }
18287     _res = NULL;
18288   done:
18289     p->level--;
18290     return _res;
18291 }
18292 
18293 // t_lookahead: '(' | '[' | '.'
18294 static void *
t_lookahead_rule(Parser * p)18295 t_lookahead_rule(Parser *p)
18296 {
18297     if (p->level++ == MAXSTACK) {
18298         p->error_indicator = 1;
18299         PyErr_NoMemory();
18300     }
18301     if (p->error_indicator) {
18302         p->level--;
18303         return NULL;
18304     }
18305     void * _res = NULL;
18306     int _mark = p->mark;
18307     { // '('
18308         if (p->error_indicator) {
18309             p->level--;
18310             return NULL;
18311         }
18312         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
18313         Token * _literal;
18314         if (
18315             (_literal = _PyPegen_expect_token(p, 7))  // token='('
18316         )
18317         {
18318             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
18319             _res = _literal;
18320             goto done;
18321         }
18322         p->mark = _mark;
18323         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
18324                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
18325     }
18326     { // '['
18327         if (p->error_indicator) {
18328             p->level--;
18329             return NULL;
18330         }
18331         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
18332         Token * _literal;
18333         if (
18334             (_literal = _PyPegen_expect_token(p, 9))  // token='['
18335         )
18336         {
18337             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
18338             _res = _literal;
18339             goto done;
18340         }
18341         p->mark = _mark;
18342         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
18343                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
18344     }
18345     { // '.'
18346         if (p->error_indicator) {
18347             p->level--;
18348             return NULL;
18349         }
18350         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
18351         Token * _literal;
18352         if (
18353             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
18354         )
18355         {
18356             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
18357             _res = _literal;
18358             goto done;
18359         }
18360         p->mark = _mark;
18361         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
18362                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
18363     }
18364     _res = NULL;
18365   done:
18366     p->level--;
18367     return _res;
18368 }
18369 
18370 // invalid_arguments:
18371 //     | args ',' '*'
18372 //     | expression for_if_clauses ',' [args | expression for_if_clauses]
18373 //     | NAME '=' expression for_if_clauses
18374 //     | args for_if_clauses
18375 //     | args ',' expression for_if_clauses
18376 //     | args ',' args
18377 static void *
invalid_arguments_rule(Parser * p)18378 invalid_arguments_rule(Parser *p)
18379 {
18380     if (p->level++ == MAXSTACK) {
18381         p->error_indicator = 1;
18382         PyErr_NoMemory();
18383     }
18384     if (p->error_indicator) {
18385         p->level--;
18386         return NULL;
18387     }
18388     void * _res = NULL;
18389     int _mark = p->mark;
18390     { // args ',' '*'
18391         if (p->error_indicator) {
18392             p->level--;
18393             return NULL;
18394         }
18395         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
18396         Token * _literal;
18397         Token * _literal_1;
18398         expr_ty a;
18399         if (
18400             (a = args_rule(p))  // args
18401             &&
18402             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18403             &&
18404             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
18405         )
18406         {
18407             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
18408             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable argument unpacking follows keyword argument unpacking" );
18409             if (_res == NULL && PyErr_Occurred()) {
18410                 p->error_indicator = 1;
18411                 p->level--;
18412                 return NULL;
18413             }
18414             goto done;
18415         }
18416         p->mark = _mark;
18417         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
18418                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' '*'"));
18419     }
18420     { // expression for_if_clauses ',' [args | expression for_if_clauses]
18421         if (p->error_indicator) {
18422             p->level--;
18423             return NULL;
18424         }
18425         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
18426         Token * _literal;
18427         void *_opt_var;
18428         UNUSED(_opt_var); // Silence compiler warnings
18429         expr_ty a;
18430         asdl_comprehension_seq* b;
18431         if (
18432             (a = expression_rule(p))  // expression
18433             &&
18434             (b = for_if_clauses_rule(p))  // for_if_clauses
18435             &&
18436             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18437             &&
18438             (_opt_var = _tmp_141_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
18439         )
18440         {
18441             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]"));
18442             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , comprehension_ty ) -> target , "Generator expression must be parenthesized" );
18443             if (_res == NULL && PyErr_Occurred()) {
18444                 p->error_indicator = 1;
18445                 p->level--;
18446                 return NULL;
18447             }
18448             goto done;
18449         }
18450         p->mark = _mark;
18451         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
18452                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
18453     }
18454     { // NAME '=' expression for_if_clauses
18455         if (p->error_indicator) {
18456             p->level--;
18457             return NULL;
18458         }
18459         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
18460         expr_ty a;
18461         Token * b;
18462         expr_ty expression_var;
18463         asdl_comprehension_seq* for_if_clauses_var;
18464         if (
18465             (a = _PyPegen_name_token(p))  // NAME
18466             &&
18467             (b = _PyPegen_expect_token(p, 22))  // token='='
18468             &&
18469             (expression_var = expression_rule(p))  // expression
18470             &&
18471             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18472         )
18473         {
18474             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
18475             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
18476             if (_res == NULL && PyErr_Occurred()) {
18477                 p->error_indicator = 1;
18478                 p->level--;
18479                 return NULL;
18480             }
18481             goto done;
18482         }
18483         p->mark = _mark;
18484         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
18485                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
18486     }
18487     { // args for_if_clauses
18488         if (p->error_indicator) {
18489             p->level--;
18490             return NULL;
18491         }
18492         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
18493         expr_ty a;
18494         asdl_comprehension_seq* b;
18495         if (
18496             (a = args_rule(p))  // args
18497             &&
18498             (b = for_if_clauses_rule(p))  // for_if_clauses
18499         )
18500         {
18501             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
18502             _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
18503             if (_res == NULL && PyErr_Occurred()) {
18504                 p->error_indicator = 1;
18505                 p->level--;
18506                 return NULL;
18507             }
18508             goto done;
18509         }
18510         p->mark = _mark;
18511         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
18512                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
18513     }
18514     { // args ',' expression for_if_clauses
18515         if (p->error_indicator) {
18516             p->level--;
18517             return NULL;
18518         }
18519         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
18520         Token * _literal;
18521         expr_ty a;
18522         expr_ty args_var;
18523         asdl_comprehension_seq* b;
18524         if (
18525             (args_var = args_rule(p))  // args
18526             &&
18527             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18528             &&
18529             (a = expression_rule(p))  // expression
18530             &&
18531             (b = for_if_clauses_rule(p))  // for_if_clauses
18532         )
18533         {
18534             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
18535             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , asdl_seq_GET ( b , b -> size - 1 ) -> target , "Generator expression must be parenthesized" );
18536             if (_res == NULL && PyErr_Occurred()) {
18537                 p->error_indicator = 1;
18538                 p->level--;
18539                 return NULL;
18540             }
18541             goto done;
18542         }
18543         p->mark = _mark;
18544         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
18545                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
18546     }
18547     { // args ',' args
18548         if (p->error_indicator) {
18549             p->level--;
18550             return NULL;
18551         }
18552         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
18553         Token * _literal;
18554         expr_ty a;
18555         expr_ty args_var;
18556         if (
18557             (a = args_rule(p))  // args
18558             &&
18559             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18560             &&
18561             (args_var = args_rule(p))  // args
18562         )
18563         {
18564             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
18565             _res = _PyPegen_arguments_parsing_error ( p , a );
18566             if (_res == NULL && PyErr_Occurred()) {
18567                 p->error_indicator = 1;
18568                 p->level--;
18569                 return NULL;
18570             }
18571             goto done;
18572         }
18573         p->mark = _mark;
18574         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
18575                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
18576     }
18577     _res = NULL;
18578   done:
18579     p->level--;
18580     return _res;
18581 }
18582 
18583 // invalid_kwarg:
18584 //     | ('True' | 'False' | 'None') '='
18585 //     | NAME '=' expression for_if_clauses
18586 //     | !(NAME '=') expression '='
18587 static void *
invalid_kwarg_rule(Parser * p)18588 invalid_kwarg_rule(Parser *p)
18589 {
18590     if (p->level++ == MAXSTACK) {
18591         p->error_indicator = 1;
18592         PyErr_NoMemory();
18593     }
18594     if (p->error_indicator) {
18595         p->level--;
18596         return NULL;
18597     }
18598     void * _res = NULL;
18599     int _mark = p->mark;
18600     { // ('True' | 'False' | 'None') '='
18601         if (p->error_indicator) {
18602             p->level--;
18603             return NULL;
18604         }
18605         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
18606         Token* a;
18607         Token * b;
18608         if (
18609             (a = (Token*)_tmp_142_rule(p))  // 'True' | 'False' | 'None'
18610             &&
18611             (b = _PyPegen_expect_token(p, 22))  // token='='
18612         )
18613         {
18614             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
18615             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s" , PyBytes_AS_STRING ( a -> bytes ) );
18616             if (_res == NULL && PyErr_Occurred()) {
18617                 p->error_indicator = 1;
18618                 p->level--;
18619                 return NULL;
18620             }
18621             goto done;
18622         }
18623         p->mark = _mark;
18624         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18625                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
18626     }
18627     { // NAME '=' expression for_if_clauses
18628         if (p->error_indicator) {
18629             p->level--;
18630             return NULL;
18631         }
18632         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
18633         expr_ty a;
18634         Token * b;
18635         expr_ty expression_var;
18636         asdl_comprehension_seq* for_if_clauses_var;
18637         if (
18638             (a = _PyPegen_name_token(p))  // NAME
18639             &&
18640             (b = _PyPegen_expect_token(p, 22))  // token='='
18641             &&
18642             (expression_var = expression_rule(p))  // expression
18643             &&
18644             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18645         )
18646         {
18647             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
18648             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
18649             if (_res == NULL && PyErr_Occurred()) {
18650                 p->error_indicator = 1;
18651                 p->level--;
18652                 return NULL;
18653             }
18654             goto done;
18655         }
18656         p->mark = _mark;
18657         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18658                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
18659     }
18660     { // !(NAME '=') expression '='
18661         if (p->error_indicator) {
18662             p->level--;
18663             return NULL;
18664         }
18665         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
18666         expr_ty a;
18667         Token * b;
18668         if (
18669             _PyPegen_lookahead(0, _tmp_143_rule, p)
18670             &&
18671             (a = expression_rule(p))  // expression
18672             &&
18673             (b = _PyPegen_expect_token(p, 22))  // token='='
18674         )
18675         {
18676             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
18677             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
18678             if (_res == NULL && PyErr_Occurred()) {
18679                 p->error_indicator = 1;
18680                 p->level--;
18681                 return NULL;
18682             }
18683             goto done;
18684         }
18685         p->mark = _mark;
18686         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18687                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
18688     }
18689     _res = NULL;
18690   done:
18691     p->level--;
18692     return _res;
18693 }
18694 
18695 // expression_without_invalid:
18696 //     | disjunction 'if' disjunction 'else' expression
18697 //     | disjunction
18698 //     | lambdef
18699 static expr_ty
expression_without_invalid_rule(Parser * p)18700 expression_without_invalid_rule(Parser *p)
18701 {
18702     if (p->level++ == MAXSTACK) {
18703         p->error_indicator = 1;
18704         PyErr_NoMemory();
18705     }
18706     if (p->error_indicator) {
18707         p->level--;
18708         return NULL;
18709     }
18710     expr_ty _res = NULL;
18711     int _mark = p->mark;
18712     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18713         p->error_indicator = 1;
18714         p->level--;
18715         return NULL;
18716     }
18717     int _start_lineno = p->tokens[_mark]->lineno;
18718     UNUSED(_start_lineno); // Only used by EXTRA macro
18719     int _start_col_offset = p->tokens[_mark]->col_offset;
18720     UNUSED(_start_col_offset); // Only used by EXTRA macro
18721     { // disjunction 'if' disjunction 'else' expression
18722         if (p->error_indicator) {
18723             p->level--;
18724             return NULL;
18725         }
18726         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18727         Token * _keyword;
18728         Token * _keyword_1;
18729         expr_ty a;
18730         expr_ty b;
18731         expr_ty c;
18732         if (
18733             (a = disjunction_rule(p))  // disjunction
18734             &&
18735             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
18736             &&
18737             (b = disjunction_rule(p))  // disjunction
18738             &&
18739             (_keyword_1 = _PyPegen_expect_token(p, 516))  // token='else'
18740             &&
18741             (c = expression_rule(p))  // expression
18742         )
18743         {
18744             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18745             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18746             if (_token == NULL) {
18747                 p->level--;
18748                 return NULL;
18749             }
18750             int _end_lineno = _token->end_lineno;
18751             UNUSED(_end_lineno); // Only used by EXTRA macro
18752             int _end_col_offset = _token->end_col_offset;
18753             UNUSED(_end_col_offset); // Only used by EXTRA macro
18754             _res = _PyAST_IfExp ( b , a , c , EXTRA );
18755             if (_res == NULL && PyErr_Occurred()) {
18756                 p->error_indicator = 1;
18757                 p->level--;
18758                 return NULL;
18759             }
18760             goto done;
18761         }
18762         p->mark = _mark;
18763         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18764                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18765     }
18766     { // disjunction
18767         if (p->error_indicator) {
18768             p->level--;
18769             return NULL;
18770         }
18771         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
18772         expr_ty disjunction_var;
18773         if (
18774             (disjunction_var = disjunction_rule(p))  // disjunction
18775         )
18776         {
18777             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
18778             _res = disjunction_var;
18779             goto done;
18780         }
18781         p->mark = _mark;
18782         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18783                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
18784     }
18785     { // lambdef
18786         if (p->error_indicator) {
18787             p->level--;
18788             return NULL;
18789         }
18790         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
18791         expr_ty lambdef_var;
18792         if (
18793             (lambdef_var = lambdef_rule(p))  // lambdef
18794         )
18795         {
18796             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
18797             _res = lambdef_var;
18798             goto done;
18799         }
18800         p->mark = _mark;
18801         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18802                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
18803     }
18804     _res = NULL;
18805   done:
18806     p->level--;
18807     return _res;
18808 }
18809 
18810 // invalid_legacy_expression: NAME !'(' star_expressions
18811 static void *
invalid_legacy_expression_rule(Parser * p)18812 invalid_legacy_expression_rule(Parser *p)
18813 {
18814     if (p->level++ == MAXSTACK) {
18815         p->error_indicator = 1;
18816         PyErr_NoMemory();
18817     }
18818     if (p->error_indicator) {
18819         p->level--;
18820         return NULL;
18821     }
18822     void * _res = NULL;
18823     int _mark = p->mark;
18824     { // NAME !'(' star_expressions
18825         if (p->error_indicator) {
18826             p->level--;
18827             return NULL;
18828         }
18829         D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
18830         expr_ty a;
18831         expr_ty b;
18832         if (
18833             (a = _PyPegen_name_token(p))  // NAME
18834             &&
18835             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
18836             &&
18837             (b = star_expressions_rule(p))  // star_expressions
18838         )
18839         {
18840             D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
18841             _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;
18842             if (_res == NULL && PyErr_Occurred()) {
18843                 p->error_indicator = 1;
18844                 p->level--;
18845                 return NULL;
18846             }
18847             goto done;
18848         }
18849         p->mark = _mark;
18850         D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
18851                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
18852     }
18853     _res = NULL;
18854   done:
18855     p->level--;
18856     return _res;
18857 }
18858 
18859 // invalid_expression:
18860 //     | !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
18861 //     | disjunction 'if' disjunction !('else' | ':')
18862 static void *
invalid_expression_rule(Parser * p)18863 invalid_expression_rule(Parser *p)
18864 {
18865     if (p->level++ == MAXSTACK) {
18866         p->error_indicator = 1;
18867         PyErr_NoMemory();
18868     }
18869     if (p->error_indicator) {
18870         p->level--;
18871         return NULL;
18872     }
18873     void * _res = NULL;
18874     int _mark = p->mark;
18875     { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
18876         if (p->error_indicator) {
18877             p->level--;
18878             return NULL;
18879         }
18880         D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18881         expr_ty a;
18882         expr_ty b;
18883         if (
18884             _PyPegen_lookahead(0, _tmp_144_rule, p)
18885             &&
18886             (a = disjunction_rule(p))  // disjunction
18887             &&
18888             (b = expression_without_invalid_rule(p))  // expression_without_invalid
18889         )
18890         {
18891             D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18892             _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?" );
18893             if (_res == NULL && PyErr_Occurred()) {
18894                 p->error_indicator = 1;
18895                 p->level--;
18896                 return NULL;
18897             }
18898             goto done;
18899         }
18900         p->mark = _mark;
18901         D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
18902                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18903     }
18904     { // disjunction 'if' disjunction !('else' | ':')
18905         if (p->error_indicator) {
18906             p->level--;
18907             return NULL;
18908         }
18909         D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18910         Token * _keyword;
18911         expr_ty a;
18912         expr_ty b;
18913         if (
18914             (a = disjunction_rule(p))  // disjunction
18915             &&
18916             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
18917             &&
18918             (b = disjunction_rule(p))  // disjunction
18919             &&
18920             _PyPegen_lookahead(0, _tmp_145_rule, p)
18921         )
18922         {
18923             D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18924             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected 'else' after 'if' expression" );
18925             if (_res == NULL && PyErr_Occurred()) {
18926                 p->error_indicator = 1;
18927                 p->level--;
18928                 return NULL;
18929             }
18930             goto done;
18931         }
18932         p->mark = _mark;
18933         D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
18934                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18935     }
18936     _res = NULL;
18937   done:
18938     p->level--;
18939     return _res;
18940 }
18941 
18942 // invalid_named_expression:
18943 //     | expression ':=' expression
18944 //     | NAME '=' bitwise_or !('=' | ':=')
18945 //     | !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
18946 static void *
invalid_named_expression_rule(Parser * p)18947 invalid_named_expression_rule(Parser *p)
18948 {
18949     if (p->level++ == MAXSTACK) {
18950         p->error_indicator = 1;
18951         PyErr_NoMemory();
18952     }
18953     if (p->error_indicator) {
18954         p->level--;
18955         return NULL;
18956     }
18957     void * _res = NULL;
18958     int _mark = p->mark;
18959     { // expression ':=' expression
18960         if (p->error_indicator) {
18961             p->level--;
18962             return NULL;
18963         }
18964         D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
18965         Token * _literal;
18966         expr_ty a;
18967         expr_ty expression_var;
18968         if (
18969             (a = expression_rule(p))  // expression
18970             &&
18971             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
18972             &&
18973             (expression_var = expression_rule(p))  // expression
18974         )
18975         {
18976             D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
18977             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
18978             if (_res == NULL && PyErr_Occurred()) {
18979                 p->error_indicator = 1;
18980                 p->level--;
18981                 return NULL;
18982             }
18983             goto done;
18984         }
18985         p->mark = _mark;
18986         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
18987                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
18988     }
18989     { // NAME '=' bitwise_or !('=' | ':=')
18990         if (p->error_indicator) {
18991             p->level--;
18992             return NULL;
18993         }
18994         D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
18995         Token * _literal;
18996         expr_ty a;
18997         expr_ty b;
18998         if (
18999             (a = _PyPegen_name_token(p))  // NAME
19000             &&
19001             (_literal = _PyPegen_expect_token(p, 22))  // token='='
19002             &&
19003             (b = bitwise_or_rule(p))  // bitwise_or
19004             &&
19005             _PyPegen_lookahead(0, _tmp_146_rule, p)
19006         )
19007         {
19008             D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
19009             _res = p -> in_raw_rule ? NULL : RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
19010             if (_res == NULL && PyErr_Occurred()) {
19011                 p->error_indicator = 1;
19012                 p->level--;
19013                 return NULL;
19014             }
19015             goto done;
19016         }
19017         p->mark = _mark;
19018         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
19019                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
19020     }
19021     { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
19022         if (p->error_indicator) {
19023             p->level--;
19024             return NULL;
19025         }
19026         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 !('=' | ':=')"));
19027         expr_ty a;
19028         Token * b;
19029         expr_ty bitwise_or_var;
19030         if (
19031             _PyPegen_lookahead(0, _tmp_147_rule, p)
19032             &&
19033             (a = bitwise_or_rule(p))  // bitwise_or
19034             &&
19035             (b = _PyPegen_expect_token(p, 22))  // token='='
19036             &&
19037             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
19038             &&
19039             _PyPegen_lookahead(0, _tmp_148_rule, p)
19040         )
19041         {
19042             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 !('=' | ':=')"));
19043             _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 ) );
19044             if (_res == NULL && PyErr_Occurred()) {
19045                 p->error_indicator = 1;
19046                 p->level--;
19047                 return NULL;
19048             }
19049             goto done;
19050         }
19051         p->mark = _mark;
19052         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
19053                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
19054     }
19055     _res = NULL;
19056   done:
19057     p->level--;
19058     return _res;
19059 }
19060 
19061 // invalid_assignment:
19062 //     | invalid_ann_assign_target ':' expression
19063 //     | star_named_expression ',' star_named_expressions* ':' expression
19064 //     | expression ':' expression
19065 //     | ((star_targets '='))* star_expressions '='
19066 //     | ((star_targets '='))* yield_expr '='
19067 //     | star_expressions augassign (yield_expr | star_expressions)
19068 static void *
invalid_assignment_rule(Parser * p)19069 invalid_assignment_rule(Parser *p)
19070 {
19071     if (p->level++ == MAXSTACK) {
19072         p->error_indicator = 1;
19073         PyErr_NoMemory();
19074     }
19075     if (p->error_indicator) {
19076         p->level--;
19077         return NULL;
19078     }
19079     void * _res = NULL;
19080     int _mark = p->mark;
19081     { // invalid_ann_assign_target ':' expression
19082         if (p->error_indicator) {
19083             p->level--;
19084             return NULL;
19085         }
19086         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
19087         Token * _literal;
19088         expr_ty a;
19089         expr_ty expression_var;
19090         if (
19091             (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
19092             &&
19093             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19094             &&
19095             (expression_var = expression_rule(p))  // expression
19096         )
19097         {
19098             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
19099             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not %s) can be annotated" , _PyPegen_get_expr_name ( a ) );
19100             if (_res == NULL && PyErr_Occurred()) {
19101                 p->error_indicator = 1;
19102                 p->level--;
19103                 return NULL;
19104             }
19105             goto done;
19106         }
19107         p->mark = _mark;
19108         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19109                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
19110     }
19111     { // star_named_expression ',' star_named_expressions* ':' expression
19112         if (p->error_indicator) {
19113             p->level--;
19114             return NULL;
19115         }
19116         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
19117         Token * _literal;
19118         Token * _literal_1;
19119         asdl_seq * _loop0_149_var;
19120         expr_ty a;
19121         expr_ty expression_var;
19122         if (
19123             (a = star_named_expression_rule(p))  // star_named_expression
19124             &&
19125             (_literal = _PyPegen_expect_token(p, 12))  // token=','
19126             &&
19127             (_loop0_149_var = _loop0_149_rule(p))  // star_named_expressions*
19128             &&
19129             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
19130             &&
19131             (expression_var = expression_rule(p))  // expression
19132         )
19133         {
19134             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
19135             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
19136             if (_res == NULL && PyErr_Occurred()) {
19137                 p->error_indicator = 1;
19138                 p->level--;
19139                 return NULL;
19140             }
19141             goto done;
19142         }
19143         p->mark = _mark;
19144         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19145                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
19146     }
19147     { // expression ':' expression
19148         if (p->error_indicator) {
19149             p->level--;
19150             return NULL;
19151         }
19152         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
19153         Token * _literal;
19154         expr_ty a;
19155         expr_ty expression_var;
19156         if (
19157             (a = expression_rule(p))  // expression
19158             &&
19159             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19160             &&
19161             (expression_var = expression_rule(p))  // expression
19162         )
19163         {
19164             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
19165             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
19166             if (_res == NULL && PyErr_Occurred()) {
19167                 p->error_indicator = 1;
19168                 p->level--;
19169                 return NULL;
19170             }
19171             goto done;
19172         }
19173         p->mark = _mark;
19174         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19175                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
19176     }
19177     { // ((star_targets '='))* star_expressions '='
19178         if (p->error_indicator) {
19179             p->level--;
19180             return NULL;
19181         }
19182         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
19183         Token * _literal;
19184         asdl_seq * _loop0_150_var;
19185         expr_ty a;
19186         if (
19187             (_loop0_150_var = _loop0_150_rule(p))  // ((star_targets '='))*
19188             &&
19189             (a = star_expressions_rule(p))  // star_expressions
19190             &&
19191             (_literal = _PyPegen_expect_token(p, 22))  // token='='
19192         )
19193         {
19194             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
19195             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
19196             if (_res == NULL && PyErr_Occurred()) {
19197                 p->error_indicator = 1;
19198                 p->level--;
19199                 return NULL;
19200             }
19201             goto done;
19202         }
19203         p->mark = _mark;
19204         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19205                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
19206     }
19207     { // ((star_targets '='))* yield_expr '='
19208         if (p->error_indicator) {
19209             p->level--;
19210             return NULL;
19211         }
19212         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
19213         Token * _literal;
19214         asdl_seq * _loop0_151_var;
19215         expr_ty a;
19216         if (
19217             (_loop0_151_var = _loop0_151_rule(p))  // ((star_targets '='))*
19218             &&
19219             (a = yield_expr_rule(p))  // yield_expr
19220             &&
19221             (_literal = _PyPegen_expect_token(p, 22))  // token='='
19222         )
19223         {
19224             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
19225             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
19226             if (_res == NULL && PyErr_Occurred()) {
19227                 p->error_indicator = 1;
19228                 p->level--;
19229                 return NULL;
19230             }
19231             goto done;
19232         }
19233         p->mark = _mark;
19234         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19235                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
19236     }
19237     { // star_expressions augassign (yield_expr | star_expressions)
19238         if (p->error_indicator) {
19239             p->level--;
19240             return NULL;
19241         }
19242         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
19243         void *_tmp_152_var;
19244         expr_ty a;
19245         AugOperator* augassign_var;
19246         if (
19247             (a = star_expressions_rule(p))  // star_expressions
19248             &&
19249             (augassign_var = augassign_rule(p))  // augassign
19250             &&
19251             (_tmp_152_var = _tmp_152_rule(p))  // yield_expr | star_expressions
19252         )
19253         {
19254             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
19255             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
19256             if (_res == NULL && PyErr_Occurred()) {
19257                 p->error_indicator = 1;
19258                 p->level--;
19259                 return NULL;
19260             }
19261             goto done;
19262         }
19263         p->mark = _mark;
19264         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19265                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
19266     }
19267     _res = NULL;
19268   done:
19269     p->level--;
19270     return _res;
19271 }
19272 
19273 // invalid_ann_assign_target: list | tuple | '(' invalid_ann_assign_target ')'
19274 static expr_ty
invalid_ann_assign_target_rule(Parser * p)19275 invalid_ann_assign_target_rule(Parser *p)
19276 {
19277     if (p->level++ == MAXSTACK) {
19278         p->error_indicator = 1;
19279         PyErr_NoMemory();
19280     }
19281     if (p->error_indicator) {
19282         p->level--;
19283         return NULL;
19284     }
19285     expr_ty _res = NULL;
19286     int _mark = p->mark;
19287     { // list
19288         if (p->error_indicator) {
19289             p->level--;
19290             return NULL;
19291         }
19292         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
19293         expr_ty list_var;
19294         if (
19295             (list_var = list_rule(p))  // list
19296         )
19297         {
19298             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
19299             _res = list_var;
19300             goto done;
19301         }
19302         p->mark = _mark;
19303         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
19304                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
19305     }
19306     { // tuple
19307         if (p->error_indicator) {
19308             p->level--;
19309             return NULL;
19310         }
19311         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
19312         expr_ty tuple_var;
19313         if (
19314             (tuple_var = tuple_rule(p))  // tuple
19315         )
19316         {
19317             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
19318             _res = tuple_var;
19319             goto done;
19320         }
19321         p->mark = _mark;
19322         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
19323                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
19324     }
19325     { // '(' invalid_ann_assign_target ')'
19326         if (p->error_indicator) {
19327             p->level--;
19328             return NULL;
19329         }
19330         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
19331         Token * _literal;
19332         Token * _literal_1;
19333         expr_ty a;
19334         if (
19335             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19336             &&
19337             (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
19338             &&
19339             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19340         )
19341         {
19342             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
19343             _res = a;
19344             if (_res == NULL && PyErr_Occurred()) {
19345                 p->error_indicator = 1;
19346                 p->level--;
19347                 return NULL;
19348             }
19349             goto done;
19350         }
19351         p->mark = _mark;
19352         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
19353                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
19354     }
19355     _res = NULL;
19356   done:
19357     p->level--;
19358     return _res;
19359 }
19360 
19361 // invalid_del_stmt: 'del' star_expressions
19362 static void *
invalid_del_stmt_rule(Parser * p)19363 invalid_del_stmt_rule(Parser *p)
19364 {
19365     if (p->level++ == MAXSTACK) {
19366         p->error_indicator = 1;
19367         PyErr_NoMemory();
19368     }
19369     if (p->error_indicator) {
19370         p->level--;
19371         return NULL;
19372     }
19373     void * _res = NULL;
19374     int _mark = p->mark;
19375     { // 'del' star_expressions
19376         if (p->error_indicator) {
19377             p->level--;
19378             return NULL;
19379         }
19380         D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
19381         Token * _keyword;
19382         expr_ty a;
19383         if (
19384             (_keyword = _PyPegen_expect_token(p, 503))  // token='del'
19385             &&
19386             (a = star_expressions_rule(p))  // star_expressions
19387         )
19388         {
19389             D(fprintf(stderr, "%*c+ invalid_del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
19390             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( DEL_TARGETS , a );
19391             if (_res == NULL && PyErr_Occurred()) {
19392                 p->error_indicator = 1;
19393                 p->level--;
19394                 return NULL;
19395             }
19396             goto done;
19397         }
19398         p->mark = _mark;
19399         D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19400                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
19401     }
19402     _res = NULL;
19403   done:
19404     p->level--;
19405     return _res;
19406 }
19407 
19408 // invalid_block: NEWLINE !INDENT
19409 static void *
invalid_block_rule(Parser * p)19410 invalid_block_rule(Parser *p)
19411 {
19412     if (p->level++ == MAXSTACK) {
19413         p->error_indicator = 1;
19414         PyErr_NoMemory();
19415     }
19416     if (p->error_indicator) {
19417         p->level--;
19418         return NULL;
19419     }
19420     void * _res = NULL;
19421     int _mark = p->mark;
19422     { // NEWLINE !INDENT
19423         if (p->error_indicator) {
19424             p->level--;
19425             return NULL;
19426         }
19427         D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
19428         Token * newline_var;
19429         if (
19430             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19431             &&
19432             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
19433         )
19434         {
19435             D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
19436             _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
19437             if (_res == NULL && PyErr_Occurred()) {
19438                 p->error_indicator = 1;
19439                 p->level--;
19440                 return NULL;
19441             }
19442             goto done;
19443         }
19444         p->mark = _mark;
19445         D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
19446                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
19447     }
19448     _res = NULL;
19449   done:
19450     p->level--;
19451     return _res;
19452 }
19453 
19454 // invalid_comprehension:
19455 //     | ('[' | '(' | '{') starred_expression for_if_clauses
19456 //     | ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
19457 //     | ('[' | '{') star_named_expression ',' for_if_clauses
19458 static void *
invalid_comprehension_rule(Parser * p)19459 invalid_comprehension_rule(Parser *p)
19460 {
19461     if (p->level++ == MAXSTACK) {
19462         p->error_indicator = 1;
19463         PyErr_NoMemory();
19464     }
19465     if (p->error_indicator) {
19466         p->level--;
19467         return NULL;
19468     }
19469     void * _res = NULL;
19470     int _mark = p->mark;
19471     { // ('[' | '(' | '{') starred_expression for_if_clauses
19472         if (p->error_indicator) {
19473             p->level--;
19474             return NULL;
19475         }
19476         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
19477         void *_tmp_153_var;
19478         expr_ty a;
19479         asdl_comprehension_seq* for_if_clauses_var;
19480         if (
19481             (_tmp_153_var = _tmp_153_rule(p))  // '[' | '(' | '{'
19482             &&
19483             (a = starred_expression_rule(p))  // starred_expression
19484             &&
19485             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
19486         )
19487         {
19488             D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
19489             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
19490             if (_res == NULL && PyErr_Occurred()) {
19491                 p->error_indicator = 1;
19492                 p->level--;
19493                 return NULL;
19494             }
19495             goto done;
19496         }
19497         p->mark = _mark;
19498         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
19499                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
19500     }
19501     { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
19502         if (p->error_indicator) {
19503             p->level--;
19504             return NULL;
19505         }
19506         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
19507         Token * _literal;
19508         void *_tmp_154_var;
19509         expr_ty a;
19510         asdl_expr_seq* b;
19511         asdl_comprehension_seq* for_if_clauses_var;
19512         if (
19513             (_tmp_154_var = _tmp_154_rule(p))  // '[' | '{'
19514             &&
19515             (a = star_named_expression_rule(p))  // star_named_expression
19516             &&
19517             (_literal = _PyPegen_expect_token(p, 12))  // token=','
19518             &&
19519             (b = star_named_expressions_rule(p))  // star_named_expressions
19520             &&
19521             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
19522         )
19523         {
19524             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"));
19525             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , expr_ty ) , "did you forget parentheses around the comprehension target?" );
19526             if (_res == NULL && PyErr_Occurred()) {
19527                 p->error_indicator = 1;
19528                 p->level--;
19529                 return NULL;
19530             }
19531             goto done;
19532         }
19533         p->mark = _mark;
19534         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
19535                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
19536     }
19537     { // ('[' | '{') star_named_expression ',' for_if_clauses
19538         if (p->error_indicator) {
19539             p->level--;
19540             return NULL;
19541         }
19542         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
19543         void *_tmp_155_var;
19544         expr_ty a;
19545         Token * b;
19546         asdl_comprehension_seq* for_if_clauses_var;
19547         if (
19548             (_tmp_155_var = _tmp_155_rule(p))  // '[' | '{'
19549             &&
19550             (a = star_named_expression_rule(p))  // star_named_expression
19551             &&
19552             (b = _PyPegen_expect_token(p, 12))  // token=','
19553             &&
19554             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
19555         )
19556         {
19557             D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
19558             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget parentheses around the comprehension target?" );
19559             if (_res == NULL && PyErr_Occurred()) {
19560                 p->error_indicator = 1;
19561                 p->level--;
19562                 return NULL;
19563             }
19564             goto done;
19565         }
19566         p->mark = _mark;
19567         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
19568                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
19569     }
19570     _res = NULL;
19571   done:
19572     p->level--;
19573     return _res;
19574 }
19575 
19576 // invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
19577 static void *
invalid_dict_comprehension_rule(Parser * p)19578 invalid_dict_comprehension_rule(Parser *p)
19579 {
19580     if (p->level++ == MAXSTACK) {
19581         p->error_indicator = 1;
19582         PyErr_NoMemory();
19583     }
19584     if (p->error_indicator) {
19585         p->level--;
19586         return NULL;
19587     }
19588     void * _res = NULL;
19589     int _mark = p->mark;
19590     { // '{' '**' bitwise_or for_if_clauses '}'
19591         if (p->error_indicator) {
19592             p->level--;
19593             return NULL;
19594         }
19595         D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
19596         Token * _literal;
19597         Token * _literal_1;
19598         Token * a;
19599         expr_ty bitwise_or_var;
19600         asdl_comprehension_seq* for_if_clauses_var;
19601         if (
19602             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
19603             &&
19604             (a = _PyPegen_expect_token(p, 35))  // token='**'
19605             &&
19606             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
19607             &&
19608             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
19609             &&
19610             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
19611         )
19612         {
19613             D(fprintf(stderr, "%*c+ invalid_dict_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
19614             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
19615             if (_res == NULL && PyErr_Occurred()) {
19616                 p->error_indicator = 1;
19617                 p->level--;
19618                 return NULL;
19619             }
19620             goto done;
19621         }
19622         p->mark = _mark;
19623         D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
19624                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
19625     }
19626     _res = NULL;
19627   done:
19628     p->level--;
19629     return _res;
19630 }
19631 
19632 // invalid_parameters: param_no_default* invalid_parameters_helper param_no_default
19633 static void *
invalid_parameters_rule(Parser * p)19634 invalid_parameters_rule(Parser *p)
19635 {
19636     if (p->level++ == MAXSTACK) {
19637         p->error_indicator = 1;
19638         PyErr_NoMemory();
19639     }
19640     if (p->error_indicator) {
19641         p->level--;
19642         return NULL;
19643     }
19644     void * _res = NULL;
19645     int _mark = p->mark;
19646     { // param_no_default* invalid_parameters_helper param_no_default
19647         if (p->error_indicator) {
19648             p->level--;
19649             return NULL;
19650         }
19651         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
19652         asdl_seq * _loop0_156_var;
19653         arg_ty a;
19654         void *invalid_parameters_helper_var;
19655         if (
19656             (_loop0_156_var = _loop0_156_rule(p))  // param_no_default*
19657             &&
19658             (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
19659             &&
19660             (a = param_no_default_rule(p))  // param_no_default
19661         )
19662         {
19663             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"));
19664             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "non-default argument follows default argument" );
19665             if (_res == NULL && PyErr_Occurred()) {
19666                 p->error_indicator = 1;
19667                 p->level--;
19668                 return NULL;
19669             }
19670             goto done;
19671         }
19672         p->mark = _mark;
19673         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
19674                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
19675     }
19676     _res = NULL;
19677   done:
19678     p->level--;
19679     return _res;
19680 }
19681 
19682 // invalid_parameters_helper: slash_with_default | param_with_default+
19683 static void *
invalid_parameters_helper_rule(Parser * p)19684 invalid_parameters_helper_rule(Parser *p)
19685 {
19686     if (p->level++ == MAXSTACK) {
19687         p->error_indicator = 1;
19688         PyErr_NoMemory();
19689     }
19690     if (p->error_indicator) {
19691         p->level--;
19692         return NULL;
19693     }
19694     void * _res = NULL;
19695     int _mark = p->mark;
19696     { // slash_with_default
19697         if (p->error_indicator) {
19698             p->level--;
19699             return NULL;
19700         }
19701         D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
19702         SlashWithDefault* a;
19703         if (
19704             (a = slash_with_default_rule(p))  // slash_with_default
19705         )
19706         {
19707             D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
19708             _res = _PyPegen_singleton_seq ( p , a );
19709             if (_res == NULL && PyErr_Occurred()) {
19710                 p->error_indicator = 1;
19711                 p->level--;
19712                 return NULL;
19713             }
19714             goto done;
19715         }
19716         p->mark = _mark;
19717         D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19718                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
19719     }
19720     { // param_with_default+
19721         if (p->error_indicator) {
19722             p->level--;
19723             return NULL;
19724         }
19725         D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
19726         asdl_seq * _loop1_157_var;
19727         if (
19728             (_loop1_157_var = _loop1_157_rule(p))  // param_with_default+
19729         )
19730         {
19731             D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
19732             _res = _loop1_157_var;
19733             goto done;
19734         }
19735         p->mark = _mark;
19736         D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19737                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
19738     }
19739     _res = NULL;
19740   done:
19741     p->level--;
19742     return _res;
19743 }
19744 
19745 // invalid_lambda_parameters:
19746 //     | lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
19747 static void *
invalid_lambda_parameters_rule(Parser * p)19748 invalid_lambda_parameters_rule(Parser *p)
19749 {
19750     if (p->level++ == MAXSTACK) {
19751         p->error_indicator = 1;
19752         PyErr_NoMemory();
19753     }
19754     if (p->error_indicator) {
19755         p->level--;
19756         return NULL;
19757     }
19758     void * _res = NULL;
19759     int _mark = p->mark;
19760     { // lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
19761         if (p->error_indicator) {
19762             p->level--;
19763             return NULL;
19764         }
19765         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"));
19766         asdl_seq * _loop0_158_var;
19767         arg_ty a;
19768         void *invalid_lambda_parameters_helper_var;
19769         if (
19770             (_loop0_158_var = _loop0_158_rule(p))  // lambda_param_no_default*
19771             &&
19772             (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
19773             &&
19774             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
19775         )
19776         {
19777             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"));
19778             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "non-default argument follows default argument" );
19779             if (_res == NULL && PyErr_Occurred()) {
19780                 p->error_indicator = 1;
19781                 p->level--;
19782                 return NULL;
19783             }
19784             goto done;
19785         }
19786         p->mark = _mark;
19787         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
19788                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
19789     }
19790     _res = NULL;
19791   done:
19792     p->level--;
19793     return _res;
19794 }
19795 
19796 // invalid_lambda_parameters_helper:
19797 //     | lambda_slash_with_default
19798 //     | lambda_param_with_default+
19799 static void *
invalid_lambda_parameters_helper_rule(Parser * p)19800 invalid_lambda_parameters_helper_rule(Parser *p)
19801 {
19802     if (p->level++ == MAXSTACK) {
19803         p->error_indicator = 1;
19804         PyErr_NoMemory();
19805     }
19806     if (p->error_indicator) {
19807         p->level--;
19808         return NULL;
19809     }
19810     void * _res = NULL;
19811     int _mark = p->mark;
19812     { // lambda_slash_with_default
19813         if (p->error_indicator) {
19814             p->level--;
19815             return NULL;
19816         }
19817         D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
19818         SlashWithDefault* a;
19819         if (
19820             (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
19821         )
19822         {
19823             D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
19824             _res = _PyPegen_singleton_seq ( p , a );
19825             if (_res == NULL && PyErr_Occurred()) {
19826                 p->error_indicator = 1;
19827                 p->level--;
19828                 return NULL;
19829             }
19830             goto done;
19831         }
19832         p->mark = _mark;
19833         D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19834                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
19835     }
19836     { // lambda_param_with_default+
19837         if (p->error_indicator) {
19838             p->level--;
19839             return NULL;
19840         }
19841         D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
19842         asdl_seq * _loop1_159_var;
19843         if (
19844             (_loop1_159_var = _loop1_159_rule(p))  // lambda_param_with_default+
19845         )
19846         {
19847             D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
19848             _res = _loop1_159_var;
19849             goto done;
19850         }
19851         p->mark = _mark;
19852         D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19853                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
19854     }
19855     _res = NULL;
19856   done:
19857     p->level--;
19858     return _res;
19859 }
19860 
19861 // invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
19862 static void *
invalid_star_etc_rule(Parser * p)19863 invalid_star_etc_rule(Parser *p)
19864 {
19865     if (p->level++ == MAXSTACK) {
19866         p->error_indicator = 1;
19867         PyErr_NoMemory();
19868     }
19869     if (p->error_indicator) {
19870         p->level--;
19871         return NULL;
19872     }
19873     void * _res = NULL;
19874     int _mark = p->mark;
19875     { // '*' (')' | ',' (')' | '**'))
19876         if (p->error_indicator) {
19877             p->level--;
19878             return NULL;
19879         }
19880         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19881         void *_tmp_160_var;
19882         Token * a;
19883         if (
19884             (a = _PyPegen_expect_token(p, 16))  // token='*'
19885             &&
19886             (_tmp_160_var = _tmp_160_rule(p))  // ')' | ',' (')' | '**')
19887         )
19888         {
19889             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19890             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "named arguments must follow bare *" );
19891             if (_res == NULL && PyErr_Occurred()) {
19892                 p->error_indicator = 1;
19893                 p->level--;
19894                 return NULL;
19895             }
19896             goto done;
19897         }
19898         p->mark = _mark;
19899         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19900                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19901     }
19902     { // '*' ',' TYPE_COMMENT
19903         if (p->error_indicator) {
19904             p->level--;
19905             return NULL;
19906         }
19907         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19908         Token * _literal;
19909         Token * _literal_1;
19910         Token * type_comment_var;
19911         if (
19912             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19913             &&
19914             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
19915             &&
19916             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19917         )
19918         {
19919             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19920             _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
19921             if (_res == NULL && PyErr_Occurred()) {
19922                 p->error_indicator = 1;
19923                 p->level--;
19924                 return NULL;
19925             }
19926             goto done;
19927         }
19928         p->mark = _mark;
19929         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19930                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19931     }
19932     _res = NULL;
19933   done:
19934     p->level--;
19935     return _res;
19936 }
19937 
19938 // invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
19939 static void *
invalid_lambda_star_etc_rule(Parser * p)19940 invalid_lambda_star_etc_rule(Parser *p)
19941 {
19942     if (p->level++ == MAXSTACK) {
19943         p->error_indicator = 1;
19944         PyErr_NoMemory();
19945     }
19946     if (p->error_indicator) {
19947         p->level--;
19948         return NULL;
19949     }
19950     void * _res = NULL;
19951     int _mark = p->mark;
19952     { // '*' (':' | ',' (':' | '**'))
19953         if (p->error_indicator) {
19954             p->level--;
19955             return NULL;
19956         }
19957         D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19958         Token * _literal;
19959         void *_tmp_161_var;
19960         if (
19961             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19962             &&
19963             (_tmp_161_var = _tmp_161_rule(p))  // ':' | ',' (':' | '**')
19964         )
19965         {
19966             D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19967             _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
19968             if (_res == NULL && PyErr_Occurred()) {
19969                 p->error_indicator = 1;
19970                 p->level--;
19971                 return NULL;
19972             }
19973             goto done;
19974         }
19975         p->mark = _mark;
19976         D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19977                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19978     }
19979     _res = NULL;
19980   done:
19981     p->level--;
19982     return _res;
19983 }
19984 
19985 // invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
19986 static void *
invalid_double_type_comments_rule(Parser * p)19987 invalid_double_type_comments_rule(Parser *p)
19988 {
19989     if (p->level++ == MAXSTACK) {
19990         p->error_indicator = 1;
19991         PyErr_NoMemory();
19992     }
19993     if (p->error_indicator) {
19994         p->level--;
19995         return NULL;
19996     }
19997     void * _res = NULL;
19998     int _mark = p->mark;
19999     { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
20000         if (p->error_indicator) {
20001             p->level--;
20002             return NULL;
20003         }
20004         D(fprintf(stderr, "%*c> invalid_double_type_comments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
20005         Token * indent_var;
20006         Token * newline_var;
20007         Token * newline_var_1;
20008         Token * type_comment_var;
20009         Token * type_comment_var_1;
20010         if (
20011             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20012             &&
20013             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20014             &&
20015             (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20016             &&
20017             (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20018             &&
20019             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
20020         )
20021         {
20022             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"));
20023             _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
20024             if (_res == NULL && PyErr_Occurred()) {
20025                 p->error_indicator = 1;
20026                 p->level--;
20027                 return NULL;
20028             }
20029             goto done;
20030         }
20031         p->mark = _mark;
20032         D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
20033                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
20034     }
20035     _res = NULL;
20036   done:
20037     p->level--;
20038     return _res;
20039 }
20040 
20041 // invalid_with_item: expression 'as' expression &(',' | ')' | ':')
20042 static void *
invalid_with_item_rule(Parser * p)20043 invalid_with_item_rule(Parser *p)
20044 {
20045     if (p->level++ == MAXSTACK) {
20046         p->error_indicator = 1;
20047         PyErr_NoMemory();
20048     }
20049     if (p->error_indicator) {
20050         p->level--;
20051         return NULL;
20052     }
20053     void * _res = NULL;
20054     int _mark = p->mark;
20055     { // expression 'as' expression &(',' | ')' | ':')
20056         if (p->error_indicator) {
20057             p->level--;
20058             return NULL;
20059         }
20060         D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
20061         Token * _keyword;
20062         expr_ty a;
20063         expr_ty expression_var;
20064         if (
20065             (expression_var = expression_rule(p))  // expression
20066             &&
20067             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
20068             &&
20069             (a = expression_rule(p))  // expression
20070             &&
20071             _PyPegen_lookahead(1, _tmp_162_rule, p)
20072         )
20073         {
20074             D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
20075             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
20076             if (_res == NULL && PyErr_Occurred()) {
20077                 p->error_indicator = 1;
20078                 p->level--;
20079                 return NULL;
20080             }
20081             goto done;
20082         }
20083         p->mark = _mark;
20084         D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
20085                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
20086     }
20087     _res = NULL;
20088   done:
20089     p->level--;
20090     return _res;
20091 }
20092 
20093 // invalid_for_target: ASYNC? 'for' star_expressions
20094 static void *
invalid_for_target_rule(Parser * p)20095 invalid_for_target_rule(Parser *p)
20096 {
20097     if (p->level++ == MAXSTACK) {
20098         p->error_indicator = 1;
20099         PyErr_NoMemory();
20100     }
20101     if (p->error_indicator) {
20102         p->level--;
20103         return NULL;
20104     }
20105     void * _res = NULL;
20106     int _mark = p->mark;
20107     { // ASYNC? 'for' star_expressions
20108         if (p->error_indicator) {
20109             p->level--;
20110             return NULL;
20111         }
20112         D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_expressions"));
20113         Token * _keyword;
20114         void *_opt_var;
20115         UNUSED(_opt_var); // Silence compiler warnings
20116         expr_ty a;
20117         if (
20118             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20119             &&
20120             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
20121             &&
20122             (a = star_expressions_rule(p))  // star_expressions
20123         )
20124         {
20125             D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_expressions"));
20126             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
20127             if (_res == NULL && PyErr_Occurred()) {
20128                 p->error_indicator = 1;
20129                 p->level--;
20130                 return NULL;
20131             }
20132             goto done;
20133         }
20134         p->mark = _mark;
20135         D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
20136                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_expressions"));
20137     }
20138     _res = NULL;
20139   done:
20140     p->level--;
20141     return _res;
20142 }
20143 
20144 // invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
20145 static void *
invalid_group_rule(Parser * p)20146 invalid_group_rule(Parser *p)
20147 {
20148     if (p->level++ == MAXSTACK) {
20149         p->error_indicator = 1;
20150         PyErr_NoMemory();
20151     }
20152     if (p->error_indicator) {
20153         p->level--;
20154         return NULL;
20155     }
20156     void * _res = NULL;
20157     int _mark = p->mark;
20158     { // '(' starred_expression ')'
20159         if (p->error_indicator) {
20160             p->level--;
20161             return NULL;
20162         }
20163         D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
20164         Token * _literal;
20165         Token * _literal_1;
20166         expr_ty a;
20167         if (
20168             (_literal = _PyPegen_expect_token(p, 7))  // token='('
20169             &&
20170             (a = starred_expression_rule(p))  // starred_expression
20171             &&
20172             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20173         )
20174         {
20175             D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
20176             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use starred expression here" );
20177             if (_res == NULL && PyErr_Occurred()) {
20178                 p->error_indicator = 1;
20179                 p->level--;
20180                 return NULL;
20181             }
20182             goto done;
20183         }
20184         p->mark = _mark;
20185         D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
20186                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
20187     }
20188     { // '(' '**' expression ')'
20189         if (p->error_indicator) {
20190             p->level--;
20191             return NULL;
20192         }
20193         D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
20194         Token * _literal;
20195         Token * _literal_1;
20196         Token * a;
20197         expr_ty expression_var;
20198         if (
20199             (_literal = _PyPegen_expect_token(p, 7))  // token='('
20200             &&
20201             (a = _PyPegen_expect_token(p, 35))  // token='**'
20202             &&
20203             (expression_var = expression_rule(p))  // expression
20204             &&
20205             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20206         )
20207         {
20208             D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
20209             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use double starred expression here" );
20210             if (_res == NULL && PyErr_Occurred()) {
20211                 p->error_indicator = 1;
20212                 p->level--;
20213                 return NULL;
20214             }
20215             goto done;
20216         }
20217         p->mark = _mark;
20218         D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
20219                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
20220     }
20221     _res = NULL;
20222   done:
20223     p->level--;
20224     return _res;
20225 }
20226 
20227 // invalid_import_from_targets: import_from_as_names ',' NEWLINE
20228 static void *
invalid_import_from_targets_rule(Parser * p)20229 invalid_import_from_targets_rule(Parser *p)
20230 {
20231     if (p->level++ == MAXSTACK) {
20232         p->error_indicator = 1;
20233         PyErr_NoMemory();
20234     }
20235     if (p->error_indicator) {
20236         p->level--;
20237         return NULL;
20238     }
20239     void * _res = NULL;
20240     int _mark = p->mark;
20241     { // import_from_as_names ',' NEWLINE
20242         if (p->error_indicator) {
20243             p->level--;
20244             return NULL;
20245         }
20246         D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
20247         Token * _literal;
20248         asdl_alias_seq* import_from_as_names_var;
20249         Token * newline_var;
20250         if (
20251             (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
20252             &&
20253             (_literal = _PyPegen_expect_token(p, 12))  // token=','
20254             &&
20255             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20256         )
20257         {
20258             D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
20259             _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
20260             if (_res == NULL && PyErr_Occurred()) {
20261                 p->error_indicator = 1;
20262                 p->level--;
20263                 return NULL;
20264             }
20265             goto done;
20266         }
20267         p->mark = _mark;
20268         D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
20269                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
20270     }
20271     _res = NULL;
20272   done:
20273     p->level--;
20274     return _res;
20275 }
20276 
20277 // invalid_with_stmt:
20278 //     | ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'
20279 //     | ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'
20280 static void *
invalid_with_stmt_rule(Parser * p)20281 invalid_with_stmt_rule(Parser *p)
20282 {
20283     if (p->level++ == MAXSTACK) {
20284         p->error_indicator = 1;
20285         PyErr_NoMemory();
20286     }
20287     if (p->error_indicator) {
20288         p->level--;
20289         return NULL;
20290     }
20291     void * _res = NULL;
20292     int _mark = p->mark;
20293     { // ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'
20294         if (p->error_indicator) {
20295             p->level--;
20296             return NULL;
20297         }
20298         D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
20299         asdl_seq * _gather_163_var;
20300         Token * _keyword;
20301         Token * _literal;
20302         void *_opt_var;
20303         UNUSED(_opt_var); // Silence compiler warnings
20304         if (
20305             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20306             &&
20307             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
20308             &&
20309             (_gather_163_var = _gather_163_rule(p))  // ','.(expression ['as' star_target])+
20310             &&
20311             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
20312         )
20313         {
20314             D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
20315             _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _gather_163_var, _literal);
20316             goto done;
20317         }
20318         p->mark = _mark;
20319         D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20320                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
20321     }
20322     { // ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'
20323         if (p->error_indicator) {
20324             p->level--;
20325             return NULL;
20326         }
20327         D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
20328         asdl_seq * _gather_165_var;
20329         Token * _keyword;
20330         Token * _literal;
20331         Token * _literal_1;
20332         Token * _literal_2;
20333         void *_opt_var;
20334         UNUSED(_opt_var); // Silence compiler warnings
20335         void *_opt_var_1;
20336         UNUSED(_opt_var_1); // Silence compiler warnings
20337         if (
20338             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20339             &&
20340             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
20341             &&
20342             (_literal = _PyPegen_expect_token(p, 7))  // token='('
20343             &&
20344             (_gather_165_var = _gather_165_rule(p))  // ','.(expressions ['as' star_target])+
20345             &&
20346             (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
20347             &&
20348             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20349             &&
20350             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
20351         )
20352         {
20353             D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
20354             _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _literal, _gather_165_var, _opt_var_1, _literal_1, _literal_2);
20355             goto done;
20356         }
20357         p->mark = _mark;
20358         D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20359                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
20360     }
20361     _res = NULL;
20362   done:
20363     p->level--;
20364     return _res;
20365 }
20366 
20367 // invalid_with_stmt_indent:
20368 //     | ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
20369 //     | ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
20370 static void *
invalid_with_stmt_indent_rule(Parser * p)20371 invalid_with_stmt_indent_rule(Parser *p)
20372 {
20373     if (p->level++ == MAXSTACK) {
20374         p->error_indicator = 1;
20375         PyErr_NoMemory();
20376     }
20377     if (p->error_indicator) {
20378         p->level--;
20379         return NULL;
20380     }
20381     void * _res = NULL;
20382     int _mark = p->mark;
20383     { // ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
20384         if (p->error_indicator) {
20385             p->level--;
20386             return NULL;
20387         }
20388         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"));
20389         asdl_seq * _gather_167_var;
20390         Token * _literal;
20391         void *_opt_var;
20392         UNUSED(_opt_var); // Silence compiler warnings
20393         Token * a;
20394         Token * newline_var;
20395         if (
20396             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20397             &&
20398             (a = _PyPegen_expect_token(p, 519))  // token='with'
20399             &&
20400             (_gather_167_var = _gather_167_rule(p))  // ','.(expression ['as' star_target])+
20401             &&
20402             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20403             &&
20404             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20405             &&
20406             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20407         )
20408         {
20409             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"));
20410             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
20411             if (_res == NULL && PyErr_Occurred()) {
20412                 p->error_indicator = 1;
20413                 p->level--;
20414                 return NULL;
20415             }
20416             goto done;
20417         }
20418         p->mark = _mark;
20419         D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
20420                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
20421     }
20422     { // ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
20423         if (p->error_indicator) {
20424             p->level--;
20425             return NULL;
20426         }
20427         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"));
20428         asdl_seq * _gather_169_var;
20429         Token * _literal;
20430         Token * _literal_1;
20431         Token * _literal_2;
20432         void *_opt_var;
20433         UNUSED(_opt_var); // Silence compiler warnings
20434         void *_opt_var_1;
20435         UNUSED(_opt_var_1); // Silence compiler warnings
20436         Token * a;
20437         Token * newline_var;
20438         if (
20439             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20440             &&
20441             (a = _PyPegen_expect_token(p, 519))  // token='with'
20442             &&
20443             (_literal = _PyPegen_expect_token(p, 7))  // token='('
20444             &&
20445             (_gather_169_var = _gather_169_rule(p))  // ','.(expressions ['as' star_target])+
20446             &&
20447             (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
20448             &&
20449             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20450             &&
20451             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
20452             &&
20453             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20454             &&
20455             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20456         )
20457         {
20458             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"));
20459             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
20460             if (_res == NULL && PyErr_Occurred()) {
20461                 p->error_indicator = 1;
20462                 p->level--;
20463                 return NULL;
20464             }
20465             goto done;
20466         }
20467         p->mark = _mark;
20468         D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
20469                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
20470     }
20471     _res = NULL;
20472   done:
20473     p->level--;
20474     return _res;
20475 }
20476 
20477 // invalid_try_stmt: 'try' ':' NEWLINE !INDENT | 'try' ':' block !('except' | 'finally')
20478 static void *
invalid_try_stmt_rule(Parser * p)20479 invalid_try_stmt_rule(Parser *p)
20480 {
20481     if (p->level++ == MAXSTACK) {
20482         p->error_indicator = 1;
20483         PyErr_NoMemory();
20484     }
20485     if (p->error_indicator) {
20486         p->level--;
20487         return NULL;
20488     }
20489     void * _res = NULL;
20490     int _mark = p->mark;
20491     { // 'try' ':' NEWLINE !INDENT
20492         if (p->error_indicator) {
20493             p->level--;
20494             return NULL;
20495         }
20496         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
20497         Token * _literal;
20498         Token * a;
20499         Token * newline_var;
20500         if (
20501             (a = _PyPegen_expect_token(p, 511))  // token='try'
20502             &&
20503             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20504             &&
20505             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20506             &&
20507             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20508         )
20509         {
20510             D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
20511             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'try' statement on line %d" , a -> lineno );
20512             if (_res == NULL && PyErr_Occurred()) {
20513                 p->error_indicator = 1;
20514                 p->level--;
20515                 return NULL;
20516             }
20517             goto done;
20518         }
20519         p->mark = _mark;
20520         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20521                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
20522     }
20523     { // 'try' ':' block !('except' | 'finally')
20524         if (p->error_indicator) {
20525             p->level--;
20526             return NULL;
20527         }
20528         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
20529         Token * _keyword;
20530         Token * _literal;
20531         asdl_stmt_seq* block_var;
20532         if (
20533             (_keyword = _PyPegen_expect_token(p, 511))  // token='try'
20534             &&
20535             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20536             &&
20537             (block_var = block_rule(p))  // block
20538             &&
20539             _PyPegen_lookahead(0, _tmp_171_rule, p)
20540         )
20541         {
20542             D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
20543             _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
20544             if (_res == NULL && PyErr_Occurred()) {
20545                 p->error_indicator = 1;
20546                 p->level--;
20547                 return NULL;
20548             }
20549             goto done;
20550         }
20551         p->mark = _mark;
20552         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20553                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
20554     }
20555     _res = NULL;
20556   done:
20557     p->level--;
20558     return _res;
20559 }
20560 
20561 // invalid_except_stmt:
20562 //     | 'except' expression ',' expressions ['as' NAME] ':'
20563 //     | 'except' expression ['as' NAME] NEWLINE
20564 //     | 'except' NEWLINE
20565 static void *
invalid_except_stmt_rule(Parser * p)20566 invalid_except_stmt_rule(Parser *p)
20567 {
20568     if (p->level++ == MAXSTACK) {
20569         p->error_indicator = 1;
20570         PyErr_NoMemory();
20571     }
20572     if (p->error_indicator) {
20573         p->level--;
20574         return NULL;
20575     }
20576     void * _res = NULL;
20577     int _mark = p->mark;
20578     { // 'except' expression ',' expressions ['as' NAME] ':'
20579         if (p->error_indicator) {
20580             p->level--;
20581             return NULL;
20582         }
20583         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
20584         Token * _keyword;
20585         Token * _literal;
20586         Token * _literal_1;
20587         void *_opt_var;
20588         UNUSED(_opt_var); // Silence compiler warnings
20589         expr_ty a;
20590         expr_ty expressions_var;
20591         if (
20592             (_keyword = _PyPegen_expect_token(p, 521))  // token='except'
20593             &&
20594             (a = expression_rule(p))  // expression
20595             &&
20596             (_literal = _PyPegen_expect_token(p, 12))  // token=','
20597             &&
20598             (expressions_var = expressions_rule(p))  // expressions
20599             &&
20600             (_opt_var = _tmp_172_rule(p), !p->error_indicator)  // ['as' NAME]
20601             &&
20602             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
20603         )
20604         {
20605             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
20606             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized" );
20607             if (_res == NULL && PyErr_Occurred()) {
20608                 p->error_indicator = 1;
20609                 p->level--;
20610                 return NULL;
20611             }
20612             goto done;
20613         }
20614         p->mark = _mark;
20615         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20616                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
20617     }
20618     { // 'except' expression ['as' NAME] NEWLINE
20619         if (p->error_indicator) {
20620             p->level--;
20621             return NULL;
20622         }
20623         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
20624         void *_opt_var;
20625         UNUSED(_opt_var); // Silence compiler warnings
20626         Token * a;
20627         expr_ty expression_var;
20628         Token * newline_var;
20629         if (
20630             (a = _PyPegen_expect_token(p, 521))  // token='except'
20631             &&
20632             (expression_var = expression_rule(p))  // expression
20633             &&
20634             (_opt_var = _tmp_173_rule(p), !p->error_indicator)  // ['as' NAME]
20635             &&
20636             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20637         )
20638         {
20639             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
20640             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20641             if (_res == NULL && PyErr_Occurred()) {
20642                 p->error_indicator = 1;
20643                 p->level--;
20644                 return NULL;
20645             }
20646             goto done;
20647         }
20648         p->mark = _mark;
20649         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20650                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
20651     }
20652     { // 'except' NEWLINE
20653         if (p->error_indicator) {
20654             p->level--;
20655             return NULL;
20656         }
20657         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
20658         Token * a;
20659         Token * newline_var;
20660         if (
20661             (a = _PyPegen_expect_token(p, 521))  // token='except'
20662             &&
20663             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20664         )
20665         {
20666             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
20667             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20668             if (_res == NULL && PyErr_Occurred()) {
20669                 p->error_indicator = 1;
20670                 p->level--;
20671                 return NULL;
20672             }
20673             goto done;
20674         }
20675         p->mark = _mark;
20676         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
20678     }
20679     _res = NULL;
20680   done:
20681     p->level--;
20682     return _res;
20683 }
20684 
20685 // invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
20686 static void *
invalid_finally_stmt_rule(Parser * p)20687 invalid_finally_stmt_rule(Parser *p)
20688 {
20689     if (p->level++ == MAXSTACK) {
20690         p->error_indicator = 1;
20691         PyErr_NoMemory();
20692     }
20693     if (p->error_indicator) {
20694         p->level--;
20695         return NULL;
20696     }
20697     void * _res = NULL;
20698     int _mark = p->mark;
20699     { // 'finally' ':' NEWLINE !INDENT
20700         if (p->error_indicator) {
20701             p->level--;
20702             return NULL;
20703         }
20704         D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20705         Token * _literal;
20706         Token * a;
20707         Token * newline_var;
20708         if (
20709             (a = _PyPegen_expect_token(p, 522))  // token='finally'
20710             &&
20711             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20712             &&
20713             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20714             &&
20715             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20716         )
20717         {
20718             D(fprintf(stderr, "%*c+ invalid_finally_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20719             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'finally' statement on line %d" , a -> lineno );
20720             if (_res == NULL && PyErr_Occurred()) {
20721                 p->error_indicator = 1;
20722                 p->level--;
20723                 return NULL;
20724             }
20725             goto done;
20726         }
20727         p->mark = _mark;
20728         D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20729                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20730     }
20731     _res = NULL;
20732   done:
20733     p->level--;
20734     return _res;
20735 }
20736 
20737 // invalid_except_stmt_indent:
20738 //     | 'except' expression ['as' NAME] ':' NEWLINE !INDENT
20739 //     | 'except' ':' NEWLINE !INDENT
20740 static void *
invalid_except_stmt_indent_rule(Parser * p)20741 invalid_except_stmt_indent_rule(Parser *p)
20742 {
20743     if (p->level++ == MAXSTACK) {
20744         p->error_indicator = 1;
20745         PyErr_NoMemory();
20746     }
20747     if (p->error_indicator) {
20748         p->level--;
20749         return NULL;
20750     }
20751     void * _res = NULL;
20752     int _mark = p->mark;
20753     { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
20754         if (p->error_indicator) {
20755             p->level--;
20756             return NULL;
20757         }
20758         D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20759         Token * _literal;
20760         void *_opt_var;
20761         UNUSED(_opt_var); // Silence compiler warnings
20762         Token * a;
20763         expr_ty expression_var;
20764         Token * newline_var;
20765         if (
20766             (a = _PyPegen_expect_token(p, 521))  // token='except'
20767             &&
20768             (expression_var = expression_rule(p))  // expression
20769             &&
20770             (_opt_var = _tmp_174_rule(p), !p->error_indicator)  // ['as' NAME]
20771             &&
20772             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20773             &&
20774             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20775             &&
20776             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20777         )
20778         {
20779             D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20780             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
20781             if (_res == NULL && PyErr_Occurred()) {
20782                 p->error_indicator = 1;
20783                 p->level--;
20784                 return NULL;
20785             }
20786             goto done;
20787         }
20788         p->mark = _mark;
20789         D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
20790                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20791     }
20792     { // 'except' ':' NEWLINE !INDENT
20793         if (p->error_indicator) {
20794             p->level--;
20795             return NULL;
20796         }
20797         D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20798         Token * _literal;
20799         Token * a;
20800         Token * newline_var;
20801         if (
20802             (a = _PyPegen_expect_token(p, 521))  // token='except'
20803             &&
20804             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20805             &&
20806             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20807             &&
20808             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20809         )
20810         {
20811             D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20812             _res = RAISE_SYNTAX_ERROR ( "expected an indented block after except statement on line %d" , a -> lineno );
20813             if (_res == NULL && PyErr_Occurred()) {
20814                 p->error_indicator = 1;
20815                 p->level--;
20816                 return NULL;
20817             }
20818             goto done;
20819         }
20820         p->mark = _mark;
20821         D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
20822                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20823     }
20824     _res = NULL;
20825   done:
20826     p->level--;
20827     return _res;
20828 }
20829 
20830 // invalid_match_stmt:
20831 //     | "match" subject_expr !':'
20832 //     | "match" subject_expr ':' NEWLINE !INDENT
20833 static void *
invalid_match_stmt_rule(Parser * p)20834 invalid_match_stmt_rule(Parser *p)
20835 {
20836     if (p->level++ == MAXSTACK) {
20837         p->error_indicator = 1;
20838         PyErr_NoMemory();
20839     }
20840     if (p->error_indicator) {
20841         p->level--;
20842         return NULL;
20843     }
20844     void * _res = NULL;
20845     int _mark = p->mark;
20846     { // "match" subject_expr !':'
20847         if (p->error_indicator) {
20848             p->level--;
20849             return NULL;
20850         }
20851         D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr !':'"));
20852         expr_ty _keyword;
20853         expr_ty subject_expr_var;
20854         if (
20855             (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
20856             &&
20857             (subject_expr_var = subject_expr_rule(p))  // subject_expr
20858             &&
20859             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=':'
20860         )
20861         {
20862             D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr !':'"));
20863             _res = CHECK_VERSION ( void * , 10 , "Pattern matching is" , RAISE_SYNTAX_ERROR ( "expected ':'" ) );
20864             if (_res == NULL && PyErr_Occurred()) {
20865                 p->error_indicator = 1;
20866                 p->level--;
20867                 return NULL;
20868             }
20869             goto done;
20870         }
20871         p->mark = _mark;
20872         D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20873                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr !':'"));
20874     }
20875     { // "match" subject_expr ':' NEWLINE !INDENT
20876         if (p->error_indicator) {
20877             p->level--;
20878             return NULL;
20879         }
20880         D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20881         Token * _literal;
20882         expr_ty a;
20883         Token * newline_var;
20884         expr_ty subject;
20885         if (
20886             (a = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
20887             &&
20888             (subject = subject_expr_rule(p))  // subject_expr
20889             &&
20890             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20891             &&
20892             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20893             &&
20894             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20895         )
20896         {
20897             D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20898             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
20899             if (_res == NULL && PyErr_Occurred()) {
20900                 p->error_indicator = 1;
20901                 p->level--;
20902                 return NULL;
20903             }
20904             goto done;
20905         }
20906         p->mark = _mark;
20907         D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20908                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20909     }
20910     _res = NULL;
20911   done:
20912     p->level--;
20913     return _res;
20914 }
20915 
20916 // invalid_case_block:
20917 //     | "case" patterns guard? !':'
20918 //     | "case" patterns guard? ':' NEWLINE !INDENT
20919 static void *
invalid_case_block_rule(Parser * p)20920 invalid_case_block_rule(Parser *p)
20921 {
20922     if (p->level++ == MAXSTACK) {
20923         p->error_indicator = 1;
20924         PyErr_NoMemory();
20925     }
20926     if (p->error_indicator) {
20927         p->level--;
20928         return NULL;
20929     }
20930     void * _res = NULL;
20931     int _mark = p->mark;
20932     { // "case" patterns guard? !':'
20933         if (p->error_indicator) {
20934             p->level--;
20935             return NULL;
20936         }
20937         D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? !':'"));
20938         expr_ty _keyword;
20939         void *_opt_var;
20940         UNUSED(_opt_var); // Silence compiler warnings
20941         pattern_ty patterns_var;
20942         if (
20943             (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
20944             &&
20945             (patterns_var = patterns_rule(p))  // patterns
20946             &&
20947             (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
20948             &&
20949             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=':'
20950         )
20951         {
20952             D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? !':'"));
20953             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20954             if (_res == NULL && PyErr_Occurred()) {
20955                 p->error_indicator = 1;
20956                 p->level--;
20957                 return NULL;
20958             }
20959             goto done;
20960         }
20961         p->mark = _mark;
20962         D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
20963                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? !':'"));
20964     }
20965     { // "case" patterns guard? ':' NEWLINE !INDENT
20966         if (p->error_indicator) {
20967             p->level--;
20968             return NULL;
20969         }
20970         D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
20971         Token * _literal;
20972         void *_opt_var;
20973         UNUSED(_opt_var); // Silence compiler warnings
20974         expr_ty a;
20975         Token * newline_var;
20976         pattern_ty patterns_var;
20977         if (
20978             (a = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
20979             &&
20980             (patterns_var = patterns_rule(p))  // patterns
20981             &&
20982             (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
20983             &&
20984             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20985             &&
20986             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20987             &&
20988             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20989         )
20990         {
20991             D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
20992             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'case' statement on line %d" , a -> lineno );
20993             if (_res == NULL && PyErr_Occurred()) {
20994                 p->error_indicator = 1;
20995                 p->level--;
20996                 return NULL;
20997             }
20998             goto done;
20999         }
21000         p->mark = _mark;
21001         D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
21002                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
21003     }
21004     _res = NULL;
21005   done:
21006     p->level--;
21007     return _res;
21008 }
21009 
21010 // invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' !NAME expression
21011 static void *
invalid_as_pattern_rule(Parser * p)21012 invalid_as_pattern_rule(Parser *p)
21013 {
21014     if (p->level++ == MAXSTACK) {
21015         p->error_indicator = 1;
21016         PyErr_NoMemory();
21017     }
21018     if (p->error_indicator) {
21019         p->level--;
21020         return NULL;
21021     }
21022     void * _res = NULL;
21023     int _mark = p->mark;
21024     { // or_pattern 'as' "_"
21025         if (p->error_indicator) {
21026             p->level--;
21027             return NULL;
21028         }
21029         D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
21030         Token * _keyword;
21031         expr_ty a;
21032         pattern_ty or_pattern_var;
21033         if (
21034             (or_pattern_var = or_pattern_rule(p))  // or_pattern
21035             &&
21036             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
21037             &&
21038             (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
21039         )
21040         {
21041             D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
21042             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" );
21043             if (_res == NULL && PyErr_Occurred()) {
21044                 p->error_indicator = 1;
21045                 p->level--;
21046                 return NULL;
21047             }
21048             goto done;
21049         }
21050         p->mark = _mark;
21051         D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
21052                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
21053     }
21054     { // or_pattern 'as' !NAME expression
21055         if (p->error_indicator) {
21056             p->level--;
21057             return NULL;
21058         }
21059         D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression"));
21060         Token * _keyword;
21061         expr_ty a;
21062         pattern_ty or_pattern_var;
21063         if (
21064             (or_pattern_var = or_pattern_rule(p))  // or_pattern
21065             &&
21066             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
21067             &&
21068             _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p)
21069             &&
21070             (a = expression_rule(p))  // expression
21071         )
21072         {
21073             D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression"));
21074             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "invalid pattern target" );
21075             if (_res == NULL && PyErr_Occurred()) {
21076                 p->error_indicator = 1;
21077                 p->level--;
21078                 return NULL;
21079             }
21080             goto done;
21081         }
21082         p->mark = _mark;
21083         D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
21084                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' !NAME expression"));
21085     }
21086     _res = NULL;
21087   done:
21088     p->level--;
21089     return _res;
21090 }
21091 
21092 // invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
21093 static void *
invalid_class_pattern_rule(Parser * p)21094 invalid_class_pattern_rule(Parser *p)
21095 {
21096     if (p->level++ == MAXSTACK) {
21097         p->error_indicator = 1;
21098         PyErr_NoMemory();
21099     }
21100     if (p->error_indicator) {
21101         p->level--;
21102         return NULL;
21103     }
21104     void * _res = NULL;
21105     int _mark = p->mark;
21106     { // name_or_attr '(' invalid_class_argument_pattern
21107         if (p->error_indicator) {
21108             p->level--;
21109             return NULL;
21110         }
21111         D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
21112         Token * _literal;
21113         asdl_pattern_seq* a;
21114         expr_ty name_or_attr_var;
21115         if (
21116             (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
21117             &&
21118             (_literal = _PyPegen_expect_token(p, 7))  // token='('
21119             &&
21120             (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
21121         )
21122         {
21123             D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
21124             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
21125             if (_res == NULL && PyErr_Occurred()) {
21126                 p->error_indicator = 1;
21127                 p->level--;
21128                 return NULL;
21129             }
21130             goto done;
21131         }
21132         p->mark = _mark;
21133         D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
21134                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
21135     }
21136     _res = NULL;
21137   done:
21138     p->level--;
21139     return _res;
21140 }
21141 
21142 // invalid_class_argument_pattern:
21143 //     | [positional_patterns ','] keyword_patterns ',' positional_patterns
21144 static asdl_pattern_seq*
invalid_class_argument_pattern_rule(Parser * p)21145 invalid_class_argument_pattern_rule(Parser *p)
21146 {
21147     if (p->level++ == MAXSTACK) {
21148         p->error_indicator = 1;
21149         PyErr_NoMemory();
21150     }
21151     if (p->error_indicator) {
21152         p->level--;
21153         return NULL;
21154     }
21155     asdl_pattern_seq* _res = NULL;
21156     int _mark = p->mark;
21157     { // [positional_patterns ','] keyword_patterns ',' positional_patterns
21158         if (p->error_indicator) {
21159             p->level--;
21160             return NULL;
21161         }
21162         D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
21163         Token * _literal;
21164         void *_opt_var;
21165         UNUSED(_opt_var); // Silence compiler warnings
21166         asdl_pattern_seq* a;
21167         asdl_seq* keyword_patterns_var;
21168         if (
21169             (_opt_var = _tmp_175_rule(p), !p->error_indicator)  // [positional_patterns ',']
21170             &&
21171             (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
21172             &&
21173             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21174             &&
21175             (a = positional_patterns_rule(p))  // positional_patterns
21176         )
21177         {
21178             D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
21179             _res = a;
21180             if (_res == NULL && PyErr_Occurred()) {
21181                 p->error_indicator = 1;
21182                 p->level--;
21183                 return NULL;
21184             }
21185             goto done;
21186         }
21187         p->mark = _mark;
21188         D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
21189                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
21190     }
21191     _res = NULL;
21192   done:
21193     p->level--;
21194     return _res;
21195 }
21196 
21197 // invalid_if_stmt:
21198 //     | 'if' named_expression NEWLINE
21199 //     | 'if' named_expression ':' NEWLINE !INDENT
21200 static void *
invalid_if_stmt_rule(Parser * p)21201 invalid_if_stmt_rule(Parser *p)
21202 {
21203     if (p->level++ == MAXSTACK) {
21204         p->error_indicator = 1;
21205         PyErr_NoMemory();
21206     }
21207     if (p->error_indicator) {
21208         p->level--;
21209         return NULL;
21210     }
21211     void * _res = NULL;
21212     int _mark = p->mark;
21213     { // 'if' named_expression NEWLINE
21214         if (p->error_indicator) {
21215             p->level--;
21216             return NULL;
21217         }
21218         D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
21219         Token * _keyword;
21220         expr_ty named_expression_var;
21221         Token * newline_var;
21222         if (
21223             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
21224             &&
21225             (named_expression_var = named_expression_rule(p))  // named_expression
21226             &&
21227             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21228         )
21229         {
21230             D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
21231             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
21232             if (_res == NULL && PyErr_Occurred()) {
21233                 p->error_indicator = 1;
21234                 p->level--;
21235                 return NULL;
21236             }
21237             goto done;
21238         }
21239         p->mark = _mark;
21240         D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21241                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression NEWLINE"));
21242     }
21243     { // 'if' named_expression ':' NEWLINE !INDENT
21244         if (p->error_indicator) {
21245             p->level--;
21246             return NULL;
21247         }
21248         D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
21249         Token * _literal;
21250         Token * a;
21251         expr_ty a_1;
21252         Token * newline_var;
21253         if (
21254             (a = _PyPegen_expect_token(p, 510))  // token='if'
21255             &&
21256             (a_1 = named_expression_rule(p))  // named_expression
21257             &&
21258             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21259             &&
21260             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21261             &&
21262             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21263         )
21264         {
21265             D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
21266             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
21267             if (_res == NULL && PyErr_Occurred()) {
21268                 p->error_indicator = 1;
21269                 p->level--;
21270                 return NULL;
21271             }
21272             goto done;
21273         }
21274         p->mark = _mark;
21275         D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21276                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
21277     }
21278     _res = NULL;
21279   done:
21280     p->level--;
21281     return _res;
21282 }
21283 
21284 // invalid_elif_stmt:
21285 //     | 'elif' named_expression NEWLINE
21286 //     | 'elif' named_expression ':' NEWLINE !INDENT
21287 static void *
invalid_elif_stmt_rule(Parser * p)21288 invalid_elif_stmt_rule(Parser *p)
21289 {
21290     if (p->level++ == MAXSTACK) {
21291         p->error_indicator = 1;
21292         PyErr_NoMemory();
21293     }
21294     if (p->error_indicator) {
21295         p->level--;
21296         return NULL;
21297     }
21298     void * _res = NULL;
21299     int _mark = p->mark;
21300     { // 'elif' named_expression NEWLINE
21301         if (p->error_indicator) {
21302             p->level--;
21303             return NULL;
21304         }
21305         D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
21306         Token * _keyword;
21307         expr_ty named_expression_var;
21308         Token * newline_var;
21309         if (
21310             (_keyword = _PyPegen_expect_token(p, 515))  // token='elif'
21311             &&
21312             (named_expression_var = named_expression_rule(p))  // named_expression
21313             &&
21314             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21315         )
21316         {
21317             D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
21318             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
21319             if (_res == NULL && PyErr_Occurred()) {
21320                 p->error_indicator = 1;
21321                 p->level--;
21322                 return NULL;
21323             }
21324             goto done;
21325         }
21326         p->mark = _mark;
21327         D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21328                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression NEWLINE"));
21329     }
21330     { // 'elif' named_expression ':' NEWLINE !INDENT
21331         if (p->error_indicator) {
21332             p->level--;
21333             return NULL;
21334         }
21335         D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
21336         Token * _literal;
21337         Token * a;
21338         expr_ty named_expression_var;
21339         Token * newline_var;
21340         if (
21341             (a = _PyPegen_expect_token(p, 515))  // token='elif'
21342             &&
21343             (named_expression_var = named_expression_rule(p))  // named_expression
21344             &&
21345             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21346             &&
21347             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21348             &&
21349             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21350         )
21351         {
21352             D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
21353             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'elif' statement on line %d" , a -> lineno );
21354             if (_res == NULL && PyErr_Occurred()) {
21355                 p->error_indicator = 1;
21356                 p->level--;
21357                 return NULL;
21358             }
21359             goto done;
21360         }
21361         p->mark = _mark;
21362         D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21363                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
21364     }
21365     _res = NULL;
21366   done:
21367     p->level--;
21368     return _res;
21369 }
21370 
21371 // invalid_else_stmt: 'else' ':' NEWLINE !INDENT
21372 static void *
invalid_else_stmt_rule(Parser * p)21373 invalid_else_stmt_rule(Parser *p)
21374 {
21375     if (p->level++ == MAXSTACK) {
21376         p->error_indicator = 1;
21377         PyErr_NoMemory();
21378     }
21379     if (p->error_indicator) {
21380         p->level--;
21381         return NULL;
21382     }
21383     void * _res = NULL;
21384     int _mark = p->mark;
21385     { // 'else' ':' NEWLINE !INDENT
21386         if (p->error_indicator) {
21387             p->level--;
21388             return NULL;
21389         }
21390         D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
21391         Token * _literal;
21392         Token * a;
21393         Token * newline_var;
21394         if (
21395             (a = _PyPegen_expect_token(p, 516))  // token='else'
21396             &&
21397             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21398             &&
21399             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21400             &&
21401             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21402         )
21403         {
21404             D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
21405             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'else' statement on line %d" , a -> lineno );
21406             if (_res == NULL && PyErr_Occurred()) {
21407                 p->error_indicator = 1;
21408                 p->level--;
21409                 return NULL;
21410             }
21411             goto done;
21412         }
21413         p->mark = _mark;
21414         D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21415                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
21416     }
21417     _res = NULL;
21418   done:
21419     p->level--;
21420     return _res;
21421 }
21422 
21423 // invalid_while_stmt:
21424 //     | 'while' named_expression NEWLINE
21425 //     | 'while' named_expression ':' NEWLINE !INDENT
21426 static void *
invalid_while_stmt_rule(Parser * p)21427 invalid_while_stmt_rule(Parser *p)
21428 {
21429     if (p->level++ == MAXSTACK) {
21430         p->error_indicator = 1;
21431         PyErr_NoMemory();
21432     }
21433     if (p->error_indicator) {
21434         p->level--;
21435         return NULL;
21436     }
21437     void * _res = NULL;
21438     int _mark = p->mark;
21439     { // 'while' named_expression NEWLINE
21440         if (p->error_indicator) {
21441             p->level--;
21442             return NULL;
21443         }
21444         D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
21445         Token * _keyword;
21446         expr_ty named_expression_var;
21447         Token * newline_var;
21448         if (
21449             (_keyword = _PyPegen_expect_token(p, 512))  // token='while'
21450             &&
21451             (named_expression_var = named_expression_rule(p))  // named_expression
21452             &&
21453             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21454         )
21455         {
21456             D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
21457             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
21458             if (_res == NULL && PyErr_Occurred()) {
21459                 p->error_indicator = 1;
21460                 p->level--;
21461                 return NULL;
21462             }
21463             goto done;
21464         }
21465         p->mark = _mark;
21466         D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21467                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression NEWLINE"));
21468     }
21469     { // 'while' named_expression ':' NEWLINE !INDENT
21470         if (p->error_indicator) {
21471             p->level--;
21472             return NULL;
21473         }
21474         D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
21475         Token * _literal;
21476         Token * a;
21477         expr_ty named_expression_var;
21478         Token * newline_var;
21479         if (
21480             (a = _PyPegen_expect_token(p, 512))  // token='while'
21481             &&
21482             (named_expression_var = named_expression_rule(p))  // named_expression
21483             &&
21484             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21485             &&
21486             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21487             &&
21488             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21489         )
21490         {
21491             D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
21492             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'while' statement on line %d" , a -> lineno );
21493             if (_res == NULL && PyErr_Occurred()) {
21494                 p->error_indicator = 1;
21495                 p->level--;
21496                 return NULL;
21497             }
21498             goto done;
21499         }
21500         p->mark = _mark;
21501         D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21502                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
21503     }
21504     _res = NULL;
21505   done:
21506     p->level--;
21507     return _res;
21508 }
21509 
21510 // invalid_for_stmt: ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
21511 static void *
invalid_for_stmt_rule(Parser * p)21512 invalid_for_stmt_rule(Parser *p)
21513 {
21514     if (p->level++ == MAXSTACK) {
21515         p->error_indicator = 1;
21516         PyErr_NoMemory();
21517     }
21518     if (p->error_indicator) {
21519         p->level--;
21520         return NULL;
21521     }
21522     void * _res = NULL;
21523     int _mark = p->mark;
21524     { // ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
21525         if (p->error_indicator) {
21526             p->level--;
21527             return NULL;
21528         }
21529         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"));
21530         Token * _keyword;
21531         Token * _literal;
21532         void *_opt_var;
21533         UNUSED(_opt_var); // Silence compiler warnings
21534         Token * a;
21535         Token * newline_var;
21536         expr_ty star_expressions_var;
21537         expr_ty star_targets_var;
21538         if (
21539             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
21540             &&
21541             (a = _PyPegen_expect_token(p, 517))  // token='for'
21542             &&
21543             (star_targets_var = star_targets_rule(p))  // star_targets
21544             &&
21545             (_keyword = _PyPegen_expect_token(p, 518))  // token='in'
21546             &&
21547             (star_expressions_var = star_expressions_rule(p))  // star_expressions
21548             &&
21549             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21550             &&
21551             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21552             &&
21553             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21554         )
21555         {
21556             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"));
21557             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'for' statement on line %d" , a -> lineno );
21558             if (_res == NULL && PyErr_Occurred()) {
21559                 p->error_indicator = 1;
21560                 p->level--;
21561                 return NULL;
21562             }
21563             goto done;
21564         }
21565         p->mark = _mark;
21566         D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21567                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
21568     }
21569     _res = NULL;
21570   done:
21571     p->level--;
21572     return _res;
21573 }
21574 
21575 // invalid_def_raw:
21576 //     | ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
21577 static void *
invalid_def_raw_rule(Parser * p)21578 invalid_def_raw_rule(Parser *p)
21579 {
21580     if (p->level++ == MAXSTACK) {
21581         p->error_indicator = 1;
21582         PyErr_NoMemory();
21583     }
21584     if (p->error_indicator) {
21585         p->level--;
21586         return NULL;
21587     }
21588     void * _res = NULL;
21589     int _mark = p->mark;
21590     { // ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
21591         if (p->error_indicator) {
21592             p->level--;
21593             return NULL;
21594         }
21595         D(fprintf(stderr, "%*c> invalid_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
21596         Token * _literal;
21597         Token * _literal_1;
21598         Token * _literal_2;
21599         void *_opt_var;
21600         UNUSED(_opt_var); // Silence compiler warnings
21601         void *_opt_var_1;
21602         UNUSED(_opt_var_1); // Silence compiler warnings
21603         void *_opt_var_2;
21604         UNUSED(_opt_var_2); // Silence compiler warnings
21605         Token * a;
21606         expr_ty name_var;
21607         Token * newline_var;
21608         if (
21609             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
21610             &&
21611             (a = _PyPegen_expect_token(p, 526))  // token='def'
21612             &&
21613             (name_var = _PyPegen_name_token(p))  // NAME
21614             &&
21615             (_literal = _PyPegen_expect_token(p, 7))  // token='('
21616             &&
21617             (_opt_var_1 = params_rule(p), !p->error_indicator)  // params?
21618             &&
21619             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21620             &&
21621             (_opt_var_2 = _tmp_176_rule(p), !p->error_indicator)  // ['->' expression]
21622             &&
21623             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
21624             &&
21625             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21626             &&
21627             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21628         )
21629         {
21630             D(fprintf(stderr, "%*c+ invalid_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
21631             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after function definition on line %d" , a -> lineno );
21632             if (_res == NULL && PyErr_Occurred()) {
21633                 p->error_indicator = 1;
21634                 p->level--;
21635                 return NULL;
21636             }
21637             goto done;
21638         }
21639         p->mark = _mark;
21640         D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
21641                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
21642     }
21643     _res = NULL;
21644   done:
21645     p->level--;
21646     return _res;
21647 }
21648 
21649 // invalid_class_def_raw: 'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT
21650 static void *
invalid_class_def_raw_rule(Parser * p)21651 invalid_class_def_raw_rule(Parser *p)
21652 {
21653     if (p->level++ == MAXSTACK) {
21654         p->error_indicator = 1;
21655         PyErr_NoMemory();
21656     }
21657     if (p->error_indicator) {
21658         p->level--;
21659         return NULL;
21660     }
21661     void * _res = NULL;
21662     int _mark = p->mark;
21663     { // 'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT
21664         if (p->error_indicator) {
21665             p->level--;
21666             return NULL;
21667         }
21668         D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
21669         Token * _literal;
21670         void *_opt_var;
21671         UNUSED(_opt_var); // Silence compiler warnings
21672         Token * a;
21673         expr_ty name_var;
21674         Token * newline_var;
21675         if (
21676             (a = _PyPegen_expect_token(p, 527))  // token='class'
21677             &&
21678             (name_var = _PyPegen_name_token(p))  // NAME
21679             &&
21680             (_opt_var = _tmp_177_rule(p), !p->error_indicator)  // ['(' arguments? ')']
21681             &&
21682             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21683             &&
21684             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21685             &&
21686             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21687         )
21688         {
21689             D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
21690             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
21691             if (_res == NULL && PyErr_Occurred()) {
21692                 p->error_indicator = 1;
21693                 p->level--;
21694                 return NULL;
21695             }
21696             goto done;
21697         }
21698         p->mark = _mark;
21699         D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
21700                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
21701     }
21702     _res = NULL;
21703   done:
21704     p->level--;
21705     return _res;
21706 }
21707 
21708 // invalid_double_starred_kvpairs:
21709 //     | ','.double_starred_kvpair+ ',' invalid_kvpair
21710 //     | expression ':' '*' bitwise_or
21711 //     | expression ':' &('}' | ',')
21712 static void *
invalid_double_starred_kvpairs_rule(Parser * p)21713 invalid_double_starred_kvpairs_rule(Parser *p)
21714 {
21715     if (p->level++ == MAXSTACK) {
21716         p->error_indicator = 1;
21717         PyErr_NoMemory();
21718     }
21719     if (p->error_indicator) {
21720         p->level--;
21721         return NULL;
21722     }
21723     void * _res = NULL;
21724     int _mark = p->mark;
21725     { // ','.double_starred_kvpair+ ',' invalid_kvpair
21726         if (p->error_indicator) {
21727             p->level--;
21728             return NULL;
21729         }
21730         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21731         asdl_seq * _gather_178_var;
21732         Token * _literal;
21733         void *invalid_kvpair_var;
21734         if (
21735             (_gather_178_var = _gather_178_rule(p))  // ','.double_starred_kvpair+
21736             &&
21737             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21738             &&
21739             (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
21740         )
21741         {
21742             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21743             _res = _PyPegen_dummy_name(p, _gather_178_var, _literal, invalid_kvpair_var);
21744             goto done;
21745         }
21746         p->mark = _mark;
21747         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21748                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21749     }
21750     { // expression ':' '*' bitwise_or
21751         if (p->error_indicator) {
21752             p->level--;
21753             return NULL;
21754         }
21755         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21756         Token * _literal;
21757         Token * a;
21758         expr_ty bitwise_or_var;
21759         expr_ty expression_var;
21760         if (
21761             (expression_var = expression_rule(p))  // expression
21762             &&
21763             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21764             &&
21765             (a = _PyPegen_expect_token(p, 16))  // token='*'
21766             &&
21767             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21768         )
21769         {
21770             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21771             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
21772             if (_res == NULL && PyErr_Occurred()) {
21773                 p->error_indicator = 1;
21774                 p->level--;
21775                 return NULL;
21776             }
21777             goto done;
21778         }
21779         p->mark = _mark;
21780         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21781                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
21782     }
21783     { // expression ':' &('}' | ',')
21784         if (p->error_indicator) {
21785             p->level--;
21786             return NULL;
21787         }
21788         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
21789         Token * a;
21790         expr_ty expression_var;
21791         if (
21792             (expression_var = expression_rule(p))  // expression
21793             &&
21794             (a = _PyPegen_expect_token(p, 11))  // token=':'
21795             &&
21796             _PyPegen_lookahead(1, _tmp_180_rule, p)
21797         )
21798         {
21799             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
21800             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
21801             if (_res == NULL && PyErr_Occurred()) {
21802                 p->error_indicator = 1;
21803                 p->level--;
21804                 return NULL;
21805             }
21806             goto done;
21807         }
21808         p->mark = _mark;
21809         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21810                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
21811     }
21812     _res = NULL;
21813   done:
21814     p->level--;
21815     return _res;
21816 }
21817 
21818 // invalid_kvpair: expression !(':') | expression ':' '*' bitwise_or | expression ':'
21819 static void *
invalid_kvpair_rule(Parser * p)21820 invalid_kvpair_rule(Parser *p)
21821 {
21822     if (p->level++ == MAXSTACK) {
21823         p->error_indicator = 1;
21824         PyErr_NoMemory();
21825     }
21826     if (p->error_indicator) {
21827         p->level--;
21828         return NULL;
21829     }
21830     void * _res = NULL;
21831     int _mark = p->mark;
21832     { // expression !(':')
21833         if (p->error_indicator) {
21834             p->level--;
21835             return NULL;
21836         }
21837         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
21838         expr_ty a;
21839         if (
21840             (a = expression_rule(p))  // expression
21841             &&
21842             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
21843         )
21844         {
21845             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
21846             _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
21847             if (_res == NULL && PyErr_Occurred()) {
21848                 p->error_indicator = 1;
21849                 p->level--;
21850                 return NULL;
21851             }
21852             goto done;
21853         }
21854         p->mark = _mark;
21855         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21856                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
21857     }
21858     { // expression ':' '*' bitwise_or
21859         if (p->error_indicator) {
21860             p->level--;
21861             return NULL;
21862         }
21863         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21864         Token * _literal;
21865         Token * a;
21866         expr_ty bitwise_or_var;
21867         expr_ty expression_var;
21868         if (
21869             (expression_var = expression_rule(p))  // expression
21870             &&
21871             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21872             &&
21873             (a = _PyPegen_expect_token(p, 16))  // token='*'
21874             &&
21875             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21876         )
21877         {
21878             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21879             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
21880             if (_res == NULL && PyErr_Occurred()) {
21881                 p->error_indicator = 1;
21882                 p->level--;
21883                 return NULL;
21884             }
21885             goto done;
21886         }
21887         p->mark = _mark;
21888         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21889                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
21890     }
21891     { // expression ':'
21892         if (p->error_indicator) {
21893             p->level--;
21894             return NULL;
21895         }
21896         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':'"));
21897         Token * a;
21898         expr_ty expression_var;
21899         if (
21900             (expression_var = expression_rule(p))  // expression
21901             &&
21902             (a = _PyPegen_expect_token(p, 11))  // token=':'
21903         )
21904         {
21905             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':'"));
21906             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
21907             if (_res == NULL && PyErr_Occurred()) {
21908                 p->error_indicator = 1;
21909                 p->level--;
21910                 return NULL;
21911             }
21912             goto done;
21913         }
21914         p->mark = _mark;
21915         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21916                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':'"));
21917     }
21918     _res = NULL;
21919   done:
21920     p->level--;
21921     return _res;
21922 }
21923 
21924 // _loop0_1: NEWLINE
21925 static asdl_seq *
_loop0_1_rule(Parser * p)21926 _loop0_1_rule(Parser *p)
21927 {
21928     if (p->level++ == MAXSTACK) {
21929         p->error_indicator = 1;
21930         PyErr_NoMemory();
21931     }
21932     if (p->error_indicator) {
21933         p->level--;
21934         return NULL;
21935     }
21936     void *_res = NULL;
21937     int _mark = p->mark;
21938     int _start_mark = p->mark;
21939     void **_children = PyMem_Malloc(sizeof(void *));
21940     if (!_children) {
21941         p->error_indicator = 1;
21942         PyErr_NoMemory();
21943         p->level--;
21944         return NULL;
21945     }
21946     Py_ssize_t _children_capacity = 1;
21947     Py_ssize_t _n = 0;
21948     { // NEWLINE
21949         if (p->error_indicator) {
21950             p->level--;
21951             return NULL;
21952         }
21953         D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
21954         Token * newline_var;
21955         while (
21956             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21957         )
21958         {
21959             _res = newline_var;
21960             if (_n == _children_capacity) {
21961                 _children_capacity *= 2;
21962                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21963                 if (!_new_children) {
21964                     p->error_indicator = 1;
21965                     PyErr_NoMemory();
21966                     p->level--;
21967                     return NULL;
21968                 }
21969                 _children = _new_children;
21970             }
21971             _children[_n++] = _res;
21972             _mark = p->mark;
21973         }
21974         p->mark = _mark;
21975         D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
21976                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
21977     }
21978     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21979     if (!_seq) {
21980         PyMem_Free(_children);
21981         p->error_indicator = 1;
21982         PyErr_NoMemory();
21983         p->level--;
21984         return NULL;
21985     }
21986     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21987     PyMem_Free(_children);
21988     _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
21989     p->level--;
21990     return _seq;
21991 }
21992 
21993 // _loop0_2: NEWLINE
21994 static asdl_seq *
_loop0_2_rule(Parser * p)21995 _loop0_2_rule(Parser *p)
21996 {
21997     if (p->level++ == MAXSTACK) {
21998         p->error_indicator = 1;
21999         PyErr_NoMemory();
22000     }
22001     if (p->error_indicator) {
22002         p->level--;
22003         return NULL;
22004     }
22005     void *_res = NULL;
22006     int _mark = p->mark;
22007     int _start_mark = p->mark;
22008     void **_children = PyMem_Malloc(sizeof(void *));
22009     if (!_children) {
22010         p->error_indicator = 1;
22011         PyErr_NoMemory();
22012         p->level--;
22013         return NULL;
22014     }
22015     Py_ssize_t _children_capacity = 1;
22016     Py_ssize_t _n = 0;
22017     { // NEWLINE
22018         if (p->error_indicator) {
22019             p->level--;
22020             return NULL;
22021         }
22022         D(fprintf(stderr, "%*c> _loop0_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
22023         Token * newline_var;
22024         while (
22025             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22026         )
22027         {
22028             _res = newline_var;
22029             if (_n == _children_capacity) {
22030                 _children_capacity *= 2;
22031                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22032                 if (!_new_children) {
22033                     p->error_indicator = 1;
22034                     PyErr_NoMemory();
22035                     p->level--;
22036                     return NULL;
22037                 }
22038                 _children = _new_children;
22039             }
22040             _children[_n++] = _res;
22041             _mark = p->mark;
22042         }
22043         p->mark = _mark;
22044         D(fprintf(stderr, "%*c%s _loop0_2[%d-%d]: %s failed!\n", p->level, ' ',
22045                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
22046     }
22047     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22048     if (!_seq) {
22049         PyMem_Free(_children);
22050         p->error_indicator = 1;
22051         PyErr_NoMemory();
22052         p->level--;
22053         return NULL;
22054     }
22055     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22056     PyMem_Free(_children);
22057     _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
22058     p->level--;
22059     return _seq;
22060 }
22061 
22062 // _loop0_4: ',' expression
22063 static asdl_seq *
_loop0_4_rule(Parser * p)22064 _loop0_4_rule(Parser *p)
22065 {
22066     if (p->level++ == MAXSTACK) {
22067         p->error_indicator = 1;
22068         PyErr_NoMemory();
22069     }
22070     if (p->error_indicator) {
22071         p->level--;
22072         return NULL;
22073     }
22074     void *_res = NULL;
22075     int _mark = p->mark;
22076     int _start_mark = p->mark;
22077     void **_children = PyMem_Malloc(sizeof(void *));
22078     if (!_children) {
22079         p->error_indicator = 1;
22080         PyErr_NoMemory();
22081         p->level--;
22082         return NULL;
22083     }
22084     Py_ssize_t _children_capacity = 1;
22085     Py_ssize_t _n = 0;
22086     { // ',' expression
22087         if (p->error_indicator) {
22088             p->level--;
22089             return NULL;
22090         }
22091         D(fprintf(stderr, "%*c> _loop0_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
22092         Token * _literal;
22093         expr_ty elem;
22094         while (
22095             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22096             &&
22097             (elem = expression_rule(p))  // expression
22098         )
22099         {
22100             _res = elem;
22101             if (_res == NULL && PyErr_Occurred()) {
22102                 p->error_indicator = 1;
22103                 PyMem_Free(_children);
22104                 p->level--;
22105                 return NULL;
22106             }
22107             if (_n == _children_capacity) {
22108                 _children_capacity *= 2;
22109                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22110                 if (!_new_children) {
22111                     p->error_indicator = 1;
22112                     PyErr_NoMemory();
22113                     p->level--;
22114                     return NULL;
22115                 }
22116                 _children = _new_children;
22117             }
22118             _children[_n++] = _res;
22119             _mark = p->mark;
22120         }
22121         p->mark = _mark;
22122         D(fprintf(stderr, "%*c%s _loop0_4[%d-%d]: %s failed!\n", p->level, ' ',
22123                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
22124     }
22125     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22126     if (!_seq) {
22127         PyMem_Free(_children);
22128         p->error_indicator = 1;
22129         PyErr_NoMemory();
22130         p->level--;
22131         return NULL;
22132     }
22133     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22134     PyMem_Free(_children);
22135     _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
22136     p->level--;
22137     return _seq;
22138 }
22139 
22140 // _gather_3: expression _loop0_4
22141 static asdl_seq *
_gather_3_rule(Parser * p)22142 _gather_3_rule(Parser *p)
22143 {
22144     if (p->level++ == MAXSTACK) {
22145         p->error_indicator = 1;
22146         PyErr_NoMemory();
22147     }
22148     if (p->error_indicator) {
22149         p->level--;
22150         return NULL;
22151     }
22152     asdl_seq * _res = NULL;
22153     int _mark = p->mark;
22154     { // expression _loop0_4
22155         if (p->error_indicator) {
22156             p->level--;
22157             return NULL;
22158         }
22159         D(fprintf(stderr, "%*c> _gather_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_4"));
22160         expr_ty elem;
22161         asdl_seq * seq;
22162         if (
22163             (elem = expression_rule(p))  // expression
22164             &&
22165             (seq = _loop0_4_rule(p))  // _loop0_4
22166         )
22167         {
22168             D(fprintf(stderr, "%*c+ _gather_3[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_4"));
22169             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22170             goto done;
22171         }
22172         p->mark = _mark;
22173         D(fprintf(stderr, "%*c%s _gather_3[%d-%d]: %s failed!\n", p->level, ' ',
22174                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_4"));
22175     }
22176     _res = NULL;
22177   done:
22178     p->level--;
22179     return _res;
22180 }
22181 
22182 // _loop0_6: ',' expression
22183 static asdl_seq *
_loop0_6_rule(Parser * p)22184 _loop0_6_rule(Parser *p)
22185 {
22186     if (p->level++ == MAXSTACK) {
22187         p->error_indicator = 1;
22188         PyErr_NoMemory();
22189     }
22190     if (p->error_indicator) {
22191         p->level--;
22192         return NULL;
22193     }
22194     void *_res = NULL;
22195     int _mark = p->mark;
22196     int _start_mark = p->mark;
22197     void **_children = PyMem_Malloc(sizeof(void *));
22198     if (!_children) {
22199         p->error_indicator = 1;
22200         PyErr_NoMemory();
22201         p->level--;
22202         return NULL;
22203     }
22204     Py_ssize_t _children_capacity = 1;
22205     Py_ssize_t _n = 0;
22206     { // ',' expression
22207         if (p->error_indicator) {
22208             p->level--;
22209             return NULL;
22210         }
22211         D(fprintf(stderr, "%*c> _loop0_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
22212         Token * _literal;
22213         expr_ty elem;
22214         while (
22215             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22216             &&
22217             (elem = expression_rule(p))  // expression
22218         )
22219         {
22220             _res = elem;
22221             if (_res == NULL && PyErr_Occurred()) {
22222                 p->error_indicator = 1;
22223                 PyMem_Free(_children);
22224                 p->level--;
22225                 return NULL;
22226             }
22227             if (_n == _children_capacity) {
22228                 _children_capacity *= 2;
22229                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22230                 if (!_new_children) {
22231                     p->error_indicator = 1;
22232                     PyErr_NoMemory();
22233                     p->level--;
22234                     return NULL;
22235                 }
22236                 _children = _new_children;
22237             }
22238             _children[_n++] = _res;
22239             _mark = p->mark;
22240         }
22241         p->mark = _mark;
22242         D(fprintf(stderr, "%*c%s _loop0_6[%d-%d]: %s failed!\n", p->level, ' ',
22243                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
22244     }
22245     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22246     if (!_seq) {
22247         PyMem_Free(_children);
22248         p->error_indicator = 1;
22249         PyErr_NoMemory();
22250         p->level--;
22251         return NULL;
22252     }
22253     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22254     PyMem_Free(_children);
22255     _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
22256     p->level--;
22257     return _seq;
22258 }
22259 
22260 // _gather_5: expression _loop0_6
22261 static asdl_seq *
_gather_5_rule(Parser * p)22262 _gather_5_rule(Parser *p)
22263 {
22264     if (p->level++ == MAXSTACK) {
22265         p->error_indicator = 1;
22266         PyErr_NoMemory();
22267     }
22268     if (p->error_indicator) {
22269         p->level--;
22270         return NULL;
22271     }
22272     asdl_seq * _res = NULL;
22273     int _mark = p->mark;
22274     { // expression _loop0_6
22275         if (p->error_indicator) {
22276             p->level--;
22277             return NULL;
22278         }
22279         D(fprintf(stderr, "%*c> _gather_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_6"));
22280         expr_ty elem;
22281         asdl_seq * seq;
22282         if (
22283             (elem = expression_rule(p))  // expression
22284             &&
22285             (seq = _loop0_6_rule(p))  // _loop0_6
22286         )
22287         {
22288             D(fprintf(stderr, "%*c+ _gather_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_6"));
22289             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22290             goto done;
22291         }
22292         p->mark = _mark;
22293         D(fprintf(stderr, "%*c%s _gather_5[%d-%d]: %s failed!\n", p->level, ' ',
22294                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_6"));
22295     }
22296     _res = NULL;
22297   done:
22298     p->level--;
22299     return _res;
22300 }
22301 
22302 // _loop0_8: ',' expression
22303 static asdl_seq *
_loop0_8_rule(Parser * p)22304 _loop0_8_rule(Parser *p)
22305 {
22306     if (p->level++ == MAXSTACK) {
22307         p->error_indicator = 1;
22308         PyErr_NoMemory();
22309     }
22310     if (p->error_indicator) {
22311         p->level--;
22312         return NULL;
22313     }
22314     void *_res = NULL;
22315     int _mark = p->mark;
22316     int _start_mark = p->mark;
22317     void **_children = PyMem_Malloc(sizeof(void *));
22318     if (!_children) {
22319         p->error_indicator = 1;
22320         PyErr_NoMemory();
22321         p->level--;
22322         return NULL;
22323     }
22324     Py_ssize_t _children_capacity = 1;
22325     Py_ssize_t _n = 0;
22326     { // ',' expression
22327         if (p->error_indicator) {
22328             p->level--;
22329             return NULL;
22330         }
22331         D(fprintf(stderr, "%*c> _loop0_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
22332         Token * _literal;
22333         expr_ty elem;
22334         while (
22335             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22336             &&
22337             (elem = expression_rule(p))  // expression
22338         )
22339         {
22340             _res = elem;
22341             if (_res == NULL && PyErr_Occurred()) {
22342                 p->error_indicator = 1;
22343                 PyMem_Free(_children);
22344                 p->level--;
22345                 return NULL;
22346             }
22347             if (_n == _children_capacity) {
22348                 _children_capacity *= 2;
22349                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22350                 if (!_new_children) {
22351                     p->error_indicator = 1;
22352                     PyErr_NoMemory();
22353                     p->level--;
22354                     return NULL;
22355                 }
22356                 _children = _new_children;
22357             }
22358             _children[_n++] = _res;
22359             _mark = p->mark;
22360         }
22361         p->mark = _mark;
22362         D(fprintf(stderr, "%*c%s _loop0_8[%d-%d]: %s failed!\n", p->level, ' ',
22363                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
22364     }
22365     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22366     if (!_seq) {
22367         PyMem_Free(_children);
22368         p->error_indicator = 1;
22369         PyErr_NoMemory();
22370         p->level--;
22371         return NULL;
22372     }
22373     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22374     PyMem_Free(_children);
22375     _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
22376     p->level--;
22377     return _seq;
22378 }
22379 
22380 // _gather_7: expression _loop0_8
22381 static asdl_seq *
_gather_7_rule(Parser * p)22382 _gather_7_rule(Parser *p)
22383 {
22384     if (p->level++ == MAXSTACK) {
22385         p->error_indicator = 1;
22386         PyErr_NoMemory();
22387     }
22388     if (p->error_indicator) {
22389         p->level--;
22390         return NULL;
22391     }
22392     asdl_seq * _res = NULL;
22393     int _mark = p->mark;
22394     { // expression _loop0_8
22395         if (p->error_indicator) {
22396             p->level--;
22397             return NULL;
22398         }
22399         D(fprintf(stderr, "%*c> _gather_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_8"));
22400         expr_ty elem;
22401         asdl_seq * seq;
22402         if (
22403             (elem = expression_rule(p))  // expression
22404             &&
22405             (seq = _loop0_8_rule(p))  // _loop0_8
22406         )
22407         {
22408             D(fprintf(stderr, "%*c+ _gather_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_8"));
22409             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22410             goto done;
22411         }
22412         p->mark = _mark;
22413         D(fprintf(stderr, "%*c%s _gather_7[%d-%d]: %s failed!\n", p->level, ' ',
22414                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_8"));
22415     }
22416     _res = NULL;
22417   done:
22418     p->level--;
22419     return _res;
22420 }
22421 
22422 // _loop0_10: ',' expression
22423 static asdl_seq *
_loop0_10_rule(Parser * p)22424 _loop0_10_rule(Parser *p)
22425 {
22426     if (p->level++ == MAXSTACK) {
22427         p->error_indicator = 1;
22428         PyErr_NoMemory();
22429     }
22430     if (p->error_indicator) {
22431         p->level--;
22432         return NULL;
22433     }
22434     void *_res = NULL;
22435     int _mark = p->mark;
22436     int _start_mark = p->mark;
22437     void **_children = PyMem_Malloc(sizeof(void *));
22438     if (!_children) {
22439         p->error_indicator = 1;
22440         PyErr_NoMemory();
22441         p->level--;
22442         return NULL;
22443     }
22444     Py_ssize_t _children_capacity = 1;
22445     Py_ssize_t _n = 0;
22446     { // ',' expression
22447         if (p->error_indicator) {
22448             p->level--;
22449             return NULL;
22450         }
22451         D(fprintf(stderr, "%*c> _loop0_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
22452         Token * _literal;
22453         expr_ty elem;
22454         while (
22455             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22456             &&
22457             (elem = expression_rule(p))  // expression
22458         )
22459         {
22460             _res = elem;
22461             if (_res == NULL && PyErr_Occurred()) {
22462                 p->error_indicator = 1;
22463                 PyMem_Free(_children);
22464                 p->level--;
22465                 return NULL;
22466             }
22467             if (_n == _children_capacity) {
22468                 _children_capacity *= 2;
22469                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22470                 if (!_new_children) {
22471                     p->error_indicator = 1;
22472                     PyErr_NoMemory();
22473                     p->level--;
22474                     return NULL;
22475                 }
22476                 _children = _new_children;
22477             }
22478             _children[_n++] = _res;
22479             _mark = p->mark;
22480         }
22481         p->mark = _mark;
22482         D(fprintf(stderr, "%*c%s _loop0_10[%d-%d]: %s failed!\n", p->level, ' ',
22483                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
22484     }
22485     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22486     if (!_seq) {
22487         PyMem_Free(_children);
22488         p->error_indicator = 1;
22489         PyErr_NoMemory();
22490         p->level--;
22491         return NULL;
22492     }
22493     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22494     PyMem_Free(_children);
22495     _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
22496     p->level--;
22497     return _seq;
22498 }
22499 
22500 // _gather_9: expression _loop0_10
22501 static asdl_seq *
_gather_9_rule(Parser * p)22502 _gather_9_rule(Parser *p)
22503 {
22504     if (p->level++ == MAXSTACK) {
22505         p->error_indicator = 1;
22506         PyErr_NoMemory();
22507     }
22508     if (p->error_indicator) {
22509         p->level--;
22510         return NULL;
22511     }
22512     asdl_seq * _res = NULL;
22513     int _mark = p->mark;
22514     { // expression _loop0_10
22515         if (p->error_indicator) {
22516             p->level--;
22517             return NULL;
22518         }
22519         D(fprintf(stderr, "%*c> _gather_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_10"));
22520         expr_ty elem;
22521         asdl_seq * seq;
22522         if (
22523             (elem = expression_rule(p))  // expression
22524             &&
22525             (seq = _loop0_10_rule(p))  // _loop0_10
22526         )
22527         {
22528             D(fprintf(stderr, "%*c+ _gather_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_10"));
22529             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22530             goto done;
22531         }
22532         p->mark = _mark;
22533         D(fprintf(stderr, "%*c%s _gather_9[%d-%d]: %s failed!\n", p->level, ' ',
22534                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_10"));
22535     }
22536     _res = NULL;
22537   done:
22538     p->level--;
22539     return _res;
22540 }
22541 
22542 // _loop1_11: statement
22543 static asdl_seq *
_loop1_11_rule(Parser * p)22544 _loop1_11_rule(Parser *p)
22545 {
22546     if (p->level++ == MAXSTACK) {
22547         p->error_indicator = 1;
22548         PyErr_NoMemory();
22549     }
22550     if (p->error_indicator) {
22551         p->level--;
22552         return NULL;
22553     }
22554     void *_res = NULL;
22555     int _mark = p->mark;
22556     int _start_mark = p->mark;
22557     void **_children = PyMem_Malloc(sizeof(void *));
22558     if (!_children) {
22559         p->error_indicator = 1;
22560         PyErr_NoMemory();
22561         p->level--;
22562         return NULL;
22563     }
22564     Py_ssize_t _children_capacity = 1;
22565     Py_ssize_t _n = 0;
22566     { // statement
22567         if (p->error_indicator) {
22568             p->level--;
22569             return NULL;
22570         }
22571         D(fprintf(stderr, "%*c> _loop1_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
22572         asdl_stmt_seq* statement_var;
22573         while (
22574             (statement_var = statement_rule(p))  // statement
22575         )
22576         {
22577             _res = statement_var;
22578             if (_n == _children_capacity) {
22579                 _children_capacity *= 2;
22580                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22581                 if (!_new_children) {
22582                     p->error_indicator = 1;
22583                     PyErr_NoMemory();
22584                     p->level--;
22585                     return NULL;
22586                 }
22587                 _children = _new_children;
22588             }
22589             _children[_n++] = _res;
22590             _mark = p->mark;
22591         }
22592         p->mark = _mark;
22593         D(fprintf(stderr, "%*c%s _loop1_11[%d-%d]: %s failed!\n", p->level, ' ',
22594                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
22595     }
22596     if (_n == 0 || p->error_indicator) {
22597         PyMem_Free(_children);
22598         p->level--;
22599         return NULL;
22600     }
22601     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22602     if (!_seq) {
22603         PyMem_Free(_children);
22604         p->error_indicator = 1;
22605         PyErr_NoMemory();
22606         p->level--;
22607         return NULL;
22608     }
22609     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22610     PyMem_Free(_children);
22611     _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
22612     p->level--;
22613     return _seq;
22614 }
22615 
22616 // _loop0_13: ';' simple_stmt
22617 static asdl_seq *
_loop0_13_rule(Parser * p)22618 _loop0_13_rule(Parser *p)
22619 {
22620     if (p->level++ == MAXSTACK) {
22621         p->error_indicator = 1;
22622         PyErr_NoMemory();
22623     }
22624     if (p->error_indicator) {
22625         p->level--;
22626         return NULL;
22627     }
22628     void *_res = NULL;
22629     int _mark = p->mark;
22630     int _start_mark = p->mark;
22631     void **_children = PyMem_Malloc(sizeof(void *));
22632     if (!_children) {
22633         p->error_indicator = 1;
22634         PyErr_NoMemory();
22635         p->level--;
22636         return NULL;
22637     }
22638     Py_ssize_t _children_capacity = 1;
22639     Py_ssize_t _n = 0;
22640     { // ';' simple_stmt
22641         if (p->error_indicator) {
22642             p->level--;
22643             return NULL;
22644         }
22645         D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
22646         Token * _literal;
22647         stmt_ty elem;
22648         while (
22649             (_literal = _PyPegen_expect_token(p, 13))  // token=';'
22650             &&
22651             (elem = simple_stmt_rule(p))  // simple_stmt
22652         )
22653         {
22654             _res = elem;
22655             if (_res == NULL && PyErr_Occurred()) {
22656                 p->error_indicator = 1;
22657                 PyMem_Free(_children);
22658                 p->level--;
22659                 return NULL;
22660             }
22661             if (_n == _children_capacity) {
22662                 _children_capacity *= 2;
22663                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22664                 if (!_new_children) {
22665                     p->error_indicator = 1;
22666                     PyErr_NoMemory();
22667                     p->level--;
22668                     return NULL;
22669                 }
22670                 _children = _new_children;
22671             }
22672             _children[_n++] = _res;
22673             _mark = p->mark;
22674         }
22675         p->mark = _mark;
22676         D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
22677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
22678     }
22679     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22680     if (!_seq) {
22681         PyMem_Free(_children);
22682         p->error_indicator = 1;
22683         PyErr_NoMemory();
22684         p->level--;
22685         return NULL;
22686     }
22687     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22688     PyMem_Free(_children);
22689     _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
22690     p->level--;
22691     return _seq;
22692 }
22693 
22694 // _gather_12: simple_stmt _loop0_13
22695 static asdl_seq *
_gather_12_rule(Parser * p)22696 _gather_12_rule(Parser *p)
22697 {
22698     if (p->level++ == MAXSTACK) {
22699         p->error_indicator = 1;
22700         PyErr_NoMemory();
22701     }
22702     if (p->error_indicator) {
22703         p->level--;
22704         return NULL;
22705     }
22706     asdl_seq * _res = NULL;
22707     int _mark = p->mark;
22708     { // simple_stmt _loop0_13
22709         if (p->error_indicator) {
22710             p->level--;
22711             return NULL;
22712         }
22713         D(fprintf(stderr, "%*c> _gather_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_13"));
22714         stmt_ty elem;
22715         asdl_seq * seq;
22716         if (
22717             (elem = simple_stmt_rule(p))  // simple_stmt
22718             &&
22719             (seq = _loop0_13_rule(p))  // _loop0_13
22720         )
22721         {
22722             D(fprintf(stderr, "%*c+ _gather_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_13"));
22723             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22724             goto done;
22725         }
22726         p->mark = _mark;
22727         D(fprintf(stderr, "%*c%s _gather_12[%d-%d]: %s failed!\n", p->level, ' ',
22728                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_13"));
22729     }
22730     _res = NULL;
22731   done:
22732     p->level--;
22733     return _res;
22734 }
22735 
22736 // _tmp_14: 'import' | 'from'
22737 static void *
_tmp_14_rule(Parser * p)22738 _tmp_14_rule(Parser *p)
22739 {
22740     if (p->level++ == MAXSTACK) {
22741         p->error_indicator = 1;
22742         PyErr_NoMemory();
22743     }
22744     if (p->error_indicator) {
22745         p->level--;
22746         return NULL;
22747     }
22748     void * _res = NULL;
22749     int _mark = p->mark;
22750     { // 'import'
22751         if (p->error_indicator) {
22752             p->level--;
22753             return NULL;
22754         }
22755         D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
22756         Token * _keyword;
22757         if (
22758             (_keyword = _PyPegen_expect_token(p, 513))  // token='import'
22759         )
22760         {
22761             D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
22762             _res = _keyword;
22763             goto done;
22764         }
22765         p->mark = _mark;
22766         D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ',
22767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
22768     }
22769     { // 'from'
22770         if (p->error_indicator) {
22771             p->level--;
22772             return NULL;
22773         }
22774         D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
22775         Token * _keyword;
22776         if (
22777             (_keyword = _PyPegen_expect_token(p, 514))  // token='from'
22778         )
22779         {
22780             D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
22781             _res = _keyword;
22782             goto done;
22783         }
22784         p->mark = _mark;
22785         D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ',
22786                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
22787     }
22788     _res = NULL;
22789   done:
22790     p->level--;
22791     return _res;
22792 }
22793 
22794 // _tmp_15: 'def' | '@' | ASYNC
22795 static void *
_tmp_15_rule(Parser * p)22796 _tmp_15_rule(Parser *p)
22797 {
22798     if (p->level++ == MAXSTACK) {
22799         p->error_indicator = 1;
22800         PyErr_NoMemory();
22801     }
22802     if (p->error_indicator) {
22803         p->level--;
22804         return NULL;
22805     }
22806     void * _res = NULL;
22807     int _mark = p->mark;
22808     { // 'def'
22809         if (p->error_indicator) {
22810             p->level--;
22811             return NULL;
22812         }
22813         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
22814         Token * _keyword;
22815         if (
22816             (_keyword = _PyPegen_expect_token(p, 526))  // token='def'
22817         )
22818         {
22819             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
22820             _res = _keyword;
22821             goto done;
22822         }
22823         p->mark = _mark;
22824         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
22825                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
22826     }
22827     { // '@'
22828         if (p->error_indicator) {
22829             p->level--;
22830             return NULL;
22831         }
22832         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
22833         Token * _literal;
22834         if (
22835             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
22836         )
22837         {
22838             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
22839             _res = _literal;
22840             goto done;
22841         }
22842         p->mark = _mark;
22843         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
22844                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
22845     }
22846     { // ASYNC
22847         if (p->error_indicator) {
22848             p->level--;
22849             return NULL;
22850         }
22851         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22852         Token * async_var;
22853         if (
22854             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
22855         )
22856         {
22857             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22858             _res = async_var;
22859             goto done;
22860         }
22861         p->mark = _mark;
22862         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
22863                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
22864     }
22865     _res = NULL;
22866   done:
22867     p->level--;
22868     return _res;
22869 }
22870 
22871 // _tmp_16: 'class' | '@'
22872 static void *
_tmp_16_rule(Parser * p)22873 _tmp_16_rule(Parser *p)
22874 {
22875     if (p->level++ == MAXSTACK) {
22876         p->error_indicator = 1;
22877         PyErr_NoMemory();
22878     }
22879     if (p->error_indicator) {
22880         p->level--;
22881         return NULL;
22882     }
22883     void * _res = NULL;
22884     int _mark = p->mark;
22885     { // 'class'
22886         if (p->error_indicator) {
22887             p->level--;
22888             return NULL;
22889         }
22890         D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
22891         Token * _keyword;
22892         if (
22893             (_keyword = _PyPegen_expect_token(p, 527))  // token='class'
22894         )
22895         {
22896             D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
22897             _res = _keyword;
22898             goto done;
22899         }
22900         p->mark = _mark;
22901         D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
22902                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
22903     }
22904     { // '@'
22905         if (p->error_indicator) {
22906             p->level--;
22907             return NULL;
22908         }
22909         D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
22910         Token * _literal;
22911         if (
22912             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
22913         )
22914         {
22915             D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
22916             _res = _literal;
22917             goto done;
22918         }
22919         p->mark = _mark;
22920         D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
22921                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
22922     }
22923     _res = NULL;
22924   done:
22925     p->level--;
22926     return _res;
22927 }
22928 
22929 // _tmp_17: 'with' | ASYNC
22930 static void *
_tmp_17_rule(Parser * p)22931 _tmp_17_rule(Parser *p)
22932 {
22933     if (p->level++ == MAXSTACK) {
22934         p->error_indicator = 1;
22935         PyErr_NoMemory();
22936     }
22937     if (p->error_indicator) {
22938         p->level--;
22939         return NULL;
22940     }
22941     void * _res = NULL;
22942     int _mark = p->mark;
22943     { // 'with'
22944         if (p->error_indicator) {
22945             p->level--;
22946             return NULL;
22947         }
22948         D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
22949         Token * _keyword;
22950         if (
22951             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
22952         )
22953         {
22954             D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
22955             _res = _keyword;
22956             goto done;
22957         }
22958         p->mark = _mark;
22959         D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
22960                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
22961     }
22962     { // ASYNC
22963         if (p->error_indicator) {
22964             p->level--;
22965             return NULL;
22966         }
22967         D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22968         Token * async_var;
22969         if (
22970             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
22971         )
22972         {
22973             D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22974             _res = async_var;
22975             goto done;
22976         }
22977         p->mark = _mark;
22978         D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
22979                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
22980     }
22981     _res = NULL;
22982   done:
22983     p->level--;
22984     return _res;
22985 }
22986 
22987 // _tmp_18: 'for' | ASYNC
22988 static void *
_tmp_18_rule(Parser * p)22989 _tmp_18_rule(Parser *p)
22990 {
22991     if (p->level++ == MAXSTACK) {
22992         p->error_indicator = 1;
22993         PyErr_NoMemory();
22994     }
22995     if (p->error_indicator) {
22996         p->level--;
22997         return NULL;
22998     }
22999     void * _res = NULL;
23000     int _mark = p->mark;
23001     { // 'for'
23002         if (p->error_indicator) {
23003             p->level--;
23004             return NULL;
23005         }
23006         D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
23007         Token * _keyword;
23008         if (
23009             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
23010         )
23011         {
23012             D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
23013             _res = _keyword;
23014             goto done;
23015         }
23016         p->mark = _mark;
23017         D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ',
23018                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
23019     }
23020     { // ASYNC
23021         if (p->error_indicator) {
23022             p->level--;
23023             return NULL;
23024         }
23025         D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
23026         Token * async_var;
23027         if (
23028             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
23029         )
23030         {
23031             D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
23032             _res = async_var;
23033             goto done;
23034         }
23035         p->mark = _mark;
23036         D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ',
23037                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
23038     }
23039     _res = NULL;
23040   done:
23041     p->level--;
23042     return _res;
23043 }
23044 
23045 // _tmp_19: '=' annotated_rhs
23046 static void *
_tmp_19_rule(Parser * p)23047 _tmp_19_rule(Parser *p)
23048 {
23049     if (p->level++ == MAXSTACK) {
23050         p->error_indicator = 1;
23051         PyErr_NoMemory();
23052     }
23053     if (p->error_indicator) {
23054         p->level--;
23055         return NULL;
23056     }
23057     void * _res = NULL;
23058     int _mark = p->mark;
23059     { // '=' annotated_rhs
23060         if (p->error_indicator) {
23061             p->level--;
23062             return NULL;
23063         }
23064         D(fprintf(stderr, "%*c> _tmp_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
23065         Token * _literal;
23066         expr_ty d;
23067         if (
23068             (_literal = _PyPegen_expect_token(p, 22))  // token='='
23069             &&
23070             (d = annotated_rhs_rule(p))  // annotated_rhs
23071         )
23072         {
23073             D(fprintf(stderr, "%*c+ _tmp_19[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
23074             _res = d;
23075             if (_res == NULL && PyErr_Occurred()) {
23076                 p->error_indicator = 1;
23077                 p->level--;
23078                 return NULL;
23079             }
23080             goto done;
23081         }
23082         p->mark = _mark;
23083         D(fprintf(stderr, "%*c%s _tmp_19[%d-%d]: %s failed!\n", p->level, ' ',
23084                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
23085     }
23086     _res = NULL;
23087   done:
23088     p->level--;
23089     return _res;
23090 }
23091 
23092 // _tmp_20: '(' single_target ')' | single_subscript_attribute_target
23093 static void *
_tmp_20_rule(Parser * p)23094 _tmp_20_rule(Parser *p)
23095 {
23096     if (p->level++ == MAXSTACK) {
23097         p->error_indicator = 1;
23098         PyErr_NoMemory();
23099     }
23100     if (p->error_indicator) {
23101         p->level--;
23102         return NULL;
23103     }
23104     void * _res = NULL;
23105     int _mark = p->mark;
23106     { // '(' single_target ')'
23107         if (p->error_indicator) {
23108             p->level--;
23109             return NULL;
23110         }
23111         D(fprintf(stderr, "%*c> _tmp_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
23112         Token * _literal;
23113         Token * _literal_1;
23114         expr_ty b;
23115         if (
23116             (_literal = _PyPegen_expect_token(p, 7))  // token='('
23117             &&
23118             (b = single_target_rule(p))  // single_target
23119             &&
23120             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23121         )
23122         {
23123             D(fprintf(stderr, "%*c+ _tmp_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
23124             _res = b;
23125             if (_res == NULL && PyErr_Occurred()) {
23126                 p->error_indicator = 1;
23127                 p->level--;
23128                 return NULL;
23129             }
23130             goto done;
23131         }
23132         p->mark = _mark;
23133         D(fprintf(stderr, "%*c%s _tmp_20[%d-%d]: %s failed!\n", p->level, ' ',
23134                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
23135     }
23136     { // single_subscript_attribute_target
23137         if (p->error_indicator) {
23138             p->level--;
23139             return NULL;
23140         }
23141         D(fprintf(stderr, "%*c> _tmp_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
23142         expr_ty single_subscript_attribute_target_var;
23143         if (
23144             (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
23145         )
23146         {
23147             D(fprintf(stderr, "%*c+ _tmp_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
23148             _res = single_subscript_attribute_target_var;
23149             goto done;
23150         }
23151         p->mark = _mark;
23152         D(fprintf(stderr, "%*c%s _tmp_20[%d-%d]: %s failed!\n", p->level, ' ',
23153                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
23154     }
23155     _res = NULL;
23156   done:
23157     p->level--;
23158     return _res;
23159 }
23160 
23161 // _tmp_21: '=' annotated_rhs
23162 static void *
_tmp_21_rule(Parser * p)23163 _tmp_21_rule(Parser *p)
23164 {
23165     if (p->level++ == MAXSTACK) {
23166         p->error_indicator = 1;
23167         PyErr_NoMemory();
23168     }
23169     if (p->error_indicator) {
23170         p->level--;
23171         return NULL;
23172     }
23173     void * _res = NULL;
23174     int _mark = p->mark;
23175     { // '=' annotated_rhs
23176         if (p->error_indicator) {
23177             p->level--;
23178             return NULL;
23179         }
23180         D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
23181         Token * _literal;
23182         expr_ty d;
23183         if (
23184             (_literal = _PyPegen_expect_token(p, 22))  // token='='
23185             &&
23186             (d = annotated_rhs_rule(p))  // annotated_rhs
23187         )
23188         {
23189             D(fprintf(stderr, "%*c+ _tmp_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
23190             _res = d;
23191             if (_res == NULL && PyErr_Occurred()) {
23192                 p->error_indicator = 1;
23193                 p->level--;
23194                 return NULL;
23195             }
23196             goto done;
23197         }
23198         p->mark = _mark;
23199         D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
23200                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
23201     }
23202     _res = NULL;
23203   done:
23204     p->level--;
23205     return _res;
23206 }
23207 
23208 // _loop1_22: (star_targets '=')
23209 static asdl_seq *
_loop1_22_rule(Parser * p)23210 _loop1_22_rule(Parser *p)
23211 {
23212     if (p->level++ == MAXSTACK) {
23213         p->error_indicator = 1;
23214         PyErr_NoMemory();
23215     }
23216     if (p->error_indicator) {
23217         p->level--;
23218         return NULL;
23219     }
23220     void *_res = NULL;
23221     int _mark = p->mark;
23222     int _start_mark = p->mark;
23223     void **_children = PyMem_Malloc(sizeof(void *));
23224     if (!_children) {
23225         p->error_indicator = 1;
23226         PyErr_NoMemory();
23227         p->level--;
23228         return NULL;
23229     }
23230     Py_ssize_t _children_capacity = 1;
23231     Py_ssize_t _n = 0;
23232     { // (star_targets '=')
23233         if (p->error_indicator) {
23234             p->level--;
23235             return NULL;
23236         }
23237         D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
23238         void *_tmp_181_var;
23239         while (
23240             (_tmp_181_var = _tmp_181_rule(p))  // star_targets '='
23241         )
23242         {
23243             _res = _tmp_181_var;
23244             if (_n == _children_capacity) {
23245                 _children_capacity *= 2;
23246                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23247                 if (!_new_children) {
23248                     p->error_indicator = 1;
23249                     PyErr_NoMemory();
23250                     p->level--;
23251                     return NULL;
23252                 }
23253                 _children = _new_children;
23254             }
23255             _children[_n++] = _res;
23256             _mark = p->mark;
23257         }
23258         p->mark = _mark;
23259         D(fprintf(stderr, "%*c%s _loop1_22[%d-%d]: %s failed!\n", p->level, ' ',
23260                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
23261     }
23262     if (_n == 0 || p->error_indicator) {
23263         PyMem_Free(_children);
23264         p->level--;
23265         return NULL;
23266     }
23267     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23268     if (!_seq) {
23269         PyMem_Free(_children);
23270         p->error_indicator = 1;
23271         PyErr_NoMemory();
23272         p->level--;
23273         return NULL;
23274     }
23275     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23276     PyMem_Free(_children);
23277     _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
23278     p->level--;
23279     return _seq;
23280 }
23281 
23282 // _tmp_23: yield_expr | star_expressions
23283 static void *
_tmp_23_rule(Parser * p)23284 _tmp_23_rule(Parser *p)
23285 {
23286     if (p->level++ == MAXSTACK) {
23287         p->error_indicator = 1;
23288         PyErr_NoMemory();
23289     }
23290     if (p->error_indicator) {
23291         p->level--;
23292         return NULL;
23293     }
23294     void * _res = NULL;
23295     int _mark = p->mark;
23296     { // yield_expr
23297         if (p->error_indicator) {
23298             p->level--;
23299             return NULL;
23300         }
23301         D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23302         expr_ty yield_expr_var;
23303         if (
23304             (yield_expr_var = yield_expr_rule(p))  // yield_expr
23305         )
23306         {
23307             D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23308             _res = yield_expr_var;
23309             goto done;
23310         }
23311         p->mark = _mark;
23312         D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
23313                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
23314     }
23315     { // star_expressions
23316         if (p->error_indicator) {
23317             p->level--;
23318             return NULL;
23319         }
23320         D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
23321         expr_ty star_expressions_var;
23322         if (
23323             (star_expressions_var = star_expressions_rule(p))  // star_expressions
23324         )
23325         {
23326             D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
23327             _res = star_expressions_var;
23328             goto done;
23329         }
23330         p->mark = _mark;
23331         D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
23332                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
23333     }
23334     _res = NULL;
23335   done:
23336     p->level--;
23337     return _res;
23338 }
23339 
23340 // _tmp_24: yield_expr | star_expressions
23341 static void *
_tmp_24_rule(Parser * p)23342 _tmp_24_rule(Parser *p)
23343 {
23344     if (p->level++ == MAXSTACK) {
23345         p->error_indicator = 1;
23346         PyErr_NoMemory();
23347     }
23348     if (p->error_indicator) {
23349         p->level--;
23350         return NULL;
23351     }
23352     void * _res = NULL;
23353     int _mark = p->mark;
23354     { // yield_expr
23355         if (p->error_indicator) {
23356             p->level--;
23357             return NULL;
23358         }
23359         D(fprintf(stderr, "%*c> _tmp_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23360         expr_ty yield_expr_var;
23361         if (
23362             (yield_expr_var = yield_expr_rule(p))  // yield_expr
23363         )
23364         {
23365             D(fprintf(stderr, "%*c+ _tmp_24[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23366             _res = yield_expr_var;
23367             goto done;
23368         }
23369         p->mark = _mark;
23370         D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ',
23371                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
23372     }
23373     { // star_expressions
23374         if (p->error_indicator) {
23375             p->level--;
23376             return NULL;
23377         }
23378         D(fprintf(stderr, "%*c> _tmp_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
23379         expr_ty star_expressions_var;
23380         if (
23381             (star_expressions_var = star_expressions_rule(p))  // star_expressions
23382         )
23383         {
23384             D(fprintf(stderr, "%*c+ _tmp_24[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
23385             _res = star_expressions_var;
23386             goto done;
23387         }
23388         p->mark = _mark;
23389         D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ',
23390                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
23391     }
23392     _res = NULL;
23393   done:
23394     p->level--;
23395     return _res;
23396 }
23397 
23398 // _loop0_26: ',' NAME
23399 static asdl_seq *
_loop0_26_rule(Parser * p)23400 _loop0_26_rule(Parser *p)
23401 {
23402     if (p->level++ == MAXSTACK) {
23403         p->error_indicator = 1;
23404         PyErr_NoMemory();
23405     }
23406     if (p->error_indicator) {
23407         p->level--;
23408         return NULL;
23409     }
23410     void *_res = NULL;
23411     int _mark = p->mark;
23412     int _start_mark = p->mark;
23413     void **_children = PyMem_Malloc(sizeof(void *));
23414     if (!_children) {
23415         p->error_indicator = 1;
23416         PyErr_NoMemory();
23417         p->level--;
23418         return NULL;
23419     }
23420     Py_ssize_t _children_capacity = 1;
23421     Py_ssize_t _n = 0;
23422     { // ',' NAME
23423         if (p->error_indicator) {
23424             p->level--;
23425             return NULL;
23426         }
23427         D(fprintf(stderr, "%*c> _loop0_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
23428         Token * _literal;
23429         expr_ty elem;
23430         while (
23431             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23432             &&
23433             (elem = _PyPegen_name_token(p))  // NAME
23434         )
23435         {
23436             _res = elem;
23437             if (_res == NULL && PyErr_Occurred()) {
23438                 p->error_indicator = 1;
23439                 PyMem_Free(_children);
23440                 p->level--;
23441                 return NULL;
23442             }
23443             if (_n == _children_capacity) {
23444                 _children_capacity *= 2;
23445                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23446                 if (!_new_children) {
23447                     p->error_indicator = 1;
23448                     PyErr_NoMemory();
23449                     p->level--;
23450                     return NULL;
23451                 }
23452                 _children = _new_children;
23453             }
23454             _children[_n++] = _res;
23455             _mark = p->mark;
23456         }
23457         p->mark = _mark;
23458         D(fprintf(stderr, "%*c%s _loop0_26[%d-%d]: %s failed!\n", p->level, ' ',
23459                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
23460     }
23461     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23462     if (!_seq) {
23463         PyMem_Free(_children);
23464         p->error_indicator = 1;
23465         PyErr_NoMemory();
23466         p->level--;
23467         return NULL;
23468     }
23469     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23470     PyMem_Free(_children);
23471     _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
23472     p->level--;
23473     return _seq;
23474 }
23475 
23476 // _gather_25: NAME _loop0_26
23477 static asdl_seq *
_gather_25_rule(Parser * p)23478 _gather_25_rule(Parser *p)
23479 {
23480     if (p->level++ == MAXSTACK) {
23481         p->error_indicator = 1;
23482         PyErr_NoMemory();
23483     }
23484     if (p->error_indicator) {
23485         p->level--;
23486         return NULL;
23487     }
23488     asdl_seq * _res = NULL;
23489     int _mark = p->mark;
23490     { // NAME _loop0_26
23491         if (p->error_indicator) {
23492             p->level--;
23493             return NULL;
23494         }
23495         D(fprintf(stderr, "%*c> _gather_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_26"));
23496         expr_ty elem;
23497         asdl_seq * seq;
23498         if (
23499             (elem = _PyPegen_name_token(p))  // NAME
23500             &&
23501             (seq = _loop0_26_rule(p))  // _loop0_26
23502         )
23503         {
23504             D(fprintf(stderr, "%*c+ _gather_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_26"));
23505             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23506             goto done;
23507         }
23508         p->mark = _mark;
23509         D(fprintf(stderr, "%*c%s _gather_25[%d-%d]: %s failed!\n", p->level, ' ',
23510                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_26"));
23511     }
23512     _res = NULL;
23513   done:
23514     p->level--;
23515     return _res;
23516 }
23517 
23518 // _loop0_28: ',' NAME
23519 static asdl_seq *
_loop0_28_rule(Parser * p)23520 _loop0_28_rule(Parser *p)
23521 {
23522     if (p->level++ == MAXSTACK) {
23523         p->error_indicator = 1;
23524         PyErr_NoMemory();
23525     }
23526     if (p->error_indicator) {
23527         p->level--;
23528         return NULL;
23529     }
23530     void *_res = NULL;
23531     int _mark = p->mark;
23532     int _start_mark = p->mark;
23533     void **_children = PyMem_Malloc(sizeof(void *));
23534     if (!_children) {
23535         p->error_indicator = 1;
23536         PyErr_NoMemory();
23537         p->level--;
23538         return NULL;
23539     }
23540     Py_ssize_t _children_capacity = 1;
23541     Py_ssize_t _n = 0;
23542     { // ',' NAME
23543         if (p->error_indicator) {
23544             p->level--;
23545             return NULL;
23546         }
23547         D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
23548         Token * _literal;
23549         expr_ty elem;
23550         while (
23551             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23552             &&
23553             (elem = _PyPegen_name_token(p))  // NAME
23554         )
23555         {
23556             _res = elem;
23557             if (_res == NULL && PyErr_Occurred()) {
23558                 p->error_indicator = 1;
23559                 PyMem_Free(_children);
23560                 p->level--;
23561                 return NULL;
23562             }
23563             if (_n == _children_capacity) {
23564                 _children_capacity *= 2;
23565                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23566                 if (!_new_children) {
23567                     p->error_indicator = 1;
23568                     PyErr_NoMemory();
23569                     p->level--;
23570                     return NULL;
23571                 }
23572                 _children = _new_children;
23573             }
23574             _children[_n++] = _res;
23575             _mark = p->mark;
23576         }
23577         p->mark = _mark;
23578         D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
23579                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
23580     }
23581     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23582     if (!_seq) {
23583         PyMem_Free(_children);
23584         p->error_indicator = 1;
23585         PyErr_NoMemory();
23586         p->level--;
23587         return NULL;
23588     }
23589     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23590     PyMem_Free(_children);
23591     _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
23592     p->level--;
23593     return _seq;
23594 }
23595 
23596 // _gather_27: NAME _loop0_28
23597 static asdl_seq *
_gather_27_rule(Parser * p)23598 _gather_27_rule(Parser *p)
23599 {
23600     if (p->level++ == MAXSTACK) {
23601         p->error_indicator = 1;
23602         PyErr_NoMemory();
23603     }
23604     if (p->error_indicator) {
23605         p->level--;
23606         return NULL;
23607     }
23608     asdl_seq * _res = NULL;
23609     int _mark = p->mark;
23610     { // NAME _loop0_28
23611         if (p->error_indicator) {
23612             p->level--;
23613             return NULL;
23614         }
23615         D(fprintf(stderr, "%*c> _gather_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_28"));
23616         expr_ty elem;
23617         asdl_seq * seq;
23618         if (
23619             (elem = _PyPegen_name_token(p))  // NAME
23620             &&
23621             (seq = _loop0_28_rule(p))  // _loop0_28
23622         )
23623         {
23624             D(fprintf(stderr, "%*c+ _gather_27[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_28"));
23625             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23626             goto done;
23627         }
23628         p->mark = _mark;
23629         D(fprintf(stderr, "%*c%s _gather_27[%d-%d]: %s failed!\n", p->level, ' ',
23630                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_28"));
23631     }
23632     _res = NULL;
23633   done:
23634     p->level--;
23635     return _res;
23636 }
23637 
23638 // _tmp_29: ',' expression
23639 static void *
_tmp_29_rule(Parser * p)23640 _tmp_29_rule(Parser *p)
23641 {
23642     if (p->level++ == MAXSTACK) {
23643         p->error_indicator = 1;
23644         PyErr_NoMemory();
23645     }
23646     if (p->error_indicator) {
23647         p->level--;
23648         return NULL;
23649     }
23650     void * _res = NULL;
23651     int _mark = p->mark;
23652     { // ',' expression
23653         if (p->error_indicator) {
23654             p->level--;
23655             return NULL;
23656         }
23657         D(fprintf(stderr, "%*c> _tmp_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
23658         Token * _literal;
23659         expr_ty z;
23660         if (
23661             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23662             &&
23663             (z = expression_rule(p))  // expression
23664         )
23665         {
23666             D(fprintf(stderr, "%*c+ _tmp_29[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
23667             _res = z;
23668             if (_res == NULL && PyErr_Occurred()) {
23669                 p->error_indicator = 1;
23670                 p->level--;
23671                 return NULL;
23672             }
23673             goto done;
23674         }
23675         p->mark = _mark;
23676         D(fprintf(stderr, "%*c%s _tmp_29[%d-%d]: %s failed!\n", p->level, ' ',
23677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
23678     }
23679     _res = NULL;
23680   done:
23681     p->level--;
23682     return _res;
23683 }
23684 
23685 // _tmp_30: ';' | NEWLINE
23686 static void *
_tmp_30_rule(Parser * p)23687 _tmp_30_rule(Parser *p)
23688 {
23689     if (p->level++ == MAXSTACK) {
23690         p->error_indicator = 1;
23691         PyErr_NoMemory();
23692     }
23693     if (p->error_indicator) {
23694         p->level--;
23695         return NULL;
23696     }
23697     void * _res = NULL;
23698     int _mark = p->mark;
23699     { // ';'
23700         if (p->error_indicator) {
23701             p->level--;
23702             return NULL;
23703         }
23704         D(fprintf(stderr, "%*c> _tmp_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
23705         Token * _literal;
23706         if (
23707             (_literal = _PyPegen_expect_token(p, 13))  // token=';'
23708         )
23709         {
23710             D(fprintf(stderr, "%*c+ _tmp_30[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
23711             _res = _literal;
23712             goto done;
23713         }
23714         p->mark = _mark;
23715         D(fprintf(stderr, "%*c%s _tmp_30[%d-%d]: %s failed!\n", p->level, ' ',
23716                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
23717     }
23718     { // NEWLINE
23719         if (p->error_indicator) {
23720             p->level--;
23721             return NULL;
23722         }
23723         D(fprintf(stderr, "%*c> _tmp_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23724         Token * newline_var;
23725         if (
23726             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23727         )
23728         {
23729             D(fprintf(stderr, "%*c+ _tmp_30[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23730             _res = newline_var;
23731             goto done;
23732         }
23733         p->mark = _mark;
23734         D(fprintf(stderr, "%*c%s _tmp_30[%d-%d]: %s failed!\n", p->level, ' ',
23735                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
23736     }
23737     _res = NULL;
23738   done:
23739     p->level--;
23740     return _res;
23741 }
23742 
23743 // _loop0_31: ('.' | '...')
23744 static asdl_seq *
_loop0_31_rule(Parser * p)23745 _loop0_31_rule(Parser *p)
23746 {
23747     if (p->level++ == MAXSTACK) {
23748         p->error_indicator = 1;
23749         PyErr_NoMemory();
23750     }
23751     if (p->error_indicator) {
23752         p->level--;
23753         return NULL;
23754     }
23755     void *_res = NULL;
23756     int _mark = p->mark;
23757     int _start_mark = p->mark;
23758     void **_children = PyMem_Malloc(sizeof(void *));
23759     if (!_children) {
23760         p->error_indicator = 1;
23761         PyErr_NoMemory();
23762         p->level--;
23763         return NULL;
23764     }
23765     Py_ssize_t _children_capacity = 1;
23766     Py_ssize_t _n = 0;
23767     { // ('.' | '...')
23768         if (p->error_indicator) {
23769             p->level--;
23770             return NULL;
23771         }
23772         D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
23773         void *_tmp_182_var;
23774         while (
23775             (_tmp_182_var = _tmp_182_rule(p))  // '.' | '...'
23776         )
23777         {
23778             _res = _tmp_182_var;
23779             if (_n == _children_capacity) {
23780                 _children_capacity *= 2;
23781                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23782                 if (!_new_children) {
23783                     p->error_indicator = 1;
23784                     PyErr_NoMemory();
23785                     p->level--;
23786                     return NULL;
23787                 }
23788                 _children = _new_children;
23789             }
23790             _children[_n++] = _res;
23791             _mark = p->mark;
23792         }
23793         p->mark = _mark;
23794         D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ',
23795                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
23796     }
23797     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23798     if (!_seq) {
23799         PyMem_Free(_children);
23800         p->error_indicator = 1;
23801         PyErr_NoMemory();
23802         p->level--;
23803         return NULL;
23804     }
23805     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23806     PyMem_Free(_children);
23807     _PyPegen_insert_memo(p, _start_mark, _loop0_31_type, _seq);
23808     p->level--;
23809     return _seq;
23810 }
23811 
23812 // _loop1_32: ('.' | '...')
23813 static asdl_seq *
_loop1_32_rule(Parser * p)23814 _loop1_32_rule(Parser *p)
23815 {
23816     if (p->level++ == MAXSTACK) {
23817         p->error_indicator = 1;
23818         PyErr_NoMemory();
23819     }
23820     if (p->error_indicator) {
23821         p->level--;
23822         return NULL;
23823     }
23824     void *_res = NULL;
23825     int _mark = p->mark;
23826     int _start_mark = p->mark;
23827     void **_children = PyMem_Malloc(sizeof(void *));
23828     if (!_children) {
23829         p->error_indicator = 1;
23830         PyErr_NoMemory();
23831         p->level--;
23832         return NULL;
23833     }
23834     Py_ssize_t _children_capacity = 1;
23835     Py_ssize_t _n = 0;
23836     { // ('.' | '...')
23837         if (p->error_indicator) {
23838             p->level--;
23839             return NULL;
23840         }
23841         D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
23842         void *_tmp_183_var;
23843         while (
23844             (_tmp_183_var = _tmp_183_rule(p))  // '.' | '...'
23845         )
23846         {
23847             _res = _tmp_183_var;
23848             if (_n == _children_capacity) {
23849                 _children_capacity *= 2;
23850                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23851                 if (!_new_children) {
23852                     p->error_indicator = 1;
23853                     PyErr_NoMemory();
23854                     p->level--;
23855                     return NULL;
23856                 }
23857                 _children = _new_children;
23858             }
23859             _children[_n++] = _res;
23860             _mark = p->mark;
23861         }
23862         p->mark = _mark;
23863         D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
23864                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
23865     }
23866     if (_n == 0 || p->error_indicator) {
23867         PyMem_Free(_children);
23868         p->level--;
23869         return NULL;
23870     }
23871     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23872     if (!_seq) {
23873         PyMem_Free(_children);
23874         p->error_indicator = 1;
23875         PyErr_NoMemory();
23876         p->level--;
23877         return NULL;
23878     }
23879     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23880     PyMem_Free(_children);
23881     _PyPegen_insert_memo(p, _start_mark, _loop1_32_type, _seq);
23882     p->level--;
23883     return _seq;
23884 }
23885 
23886 // _loop0_34: ',' import_from_as_name
23887 static asdl_seq *
_loop0_34_rule(Parser * p)23888 _loop0_34_rule(Parser *p)
23889 {
23890     if (p->level++ == MAXSTACK) {
23891         p->error_indicator = 1;
23892         PyErr_NoMemory();
23893     }
23894     if (p->error_indicator) {
23895         p->level--;
23896         return NULL;
23897     }
23898     void *_res = NULL;
23899     int _mark = p->mark;
23900     int _start_mark = p->mark;
23901     void **_children = PyMem_Malloc(sizeof(void *));
23902     if (!_children) {
23903         p->error_indicator = 1;
23904         PyErr_NoMemory();
23905         p->level--;
23906         return NULL;
23907     }
23908     Py_ssize_t _children_capacity = 1;
23909     Py_ssize_t _n = 0;
23910     { // ',' import_from_as_name
23911         if (p->error_indicator) {
23912             p->level--;
23913             return NULL;
23914         }
23915         D(fprintf(stderr, "%*c> _loop0_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
23916         Token * _literal;
23917         alias_ty elem;
23918         while (
23919             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23920             &&
23921             (elem = import_from_as_name_rule(p))  // import_from_as_name
23922         )
23923         {
23924             _res = elem;
23925             if (_res == NULL && PyErr_Occurred()) {
23926                 p->error_indicator = 1;
23927                 PyMem_Free(_children);
23928                 p->level--;
23929                 return NULL;
23930             }
23931             if (_n == _children_capacity) {
23932                 _children_capacity *= 2;
23933                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23934                 if (!_new_children) {
23935                     p->error_indicator = 1;
23936                     PyErr_NoMemory();
23937                     p->level--;
23938                     return NULL;
23939                 }
23940                 _children = _new_children;
23941             }
23942             _children[_n++] = _res;
23943             _mark = p->mark;
23944         }
23945         p->mark = _mark;
23946         D(fprintf(stderr, "%*c%s _loop0_34[%d-%d]: %s failed!\n", p->level, ' ',
23947                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
23948     }
23949     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23950     if (!_seq) {
23951         PyMem_Free(_children);
23952         p->error_indicator = 1;
23953         PyErr_NoMemory();
23954         p->level--;
23955         return NULL;
23956     }
23957     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23958     PyMem_Free(_children);
23959     _PyPegen_insert_memo(p, _start_mark, _loop0_34_type, _seq);
23960     p->level--;
23961     return _seq;
23962 }
23963 
23964 // _gather_33: import_from_as_name _loop0_34
23965 static asdl_seq *
_gather_33_rule(Parser * p)23966 _gather_33_rule(Parser *p)
23967 {
23968     if (p->level++ == MAXSTACK) {
23969         p->error_indicator = 1;
23970         PyErr_NoMemory();
23971     }
23972     if (p->error_indicator) {
23973         p->level--;
23974         return NULL;
23975     }
23976     asdl_seq * _res = NULL;
23977     int _mark = p->mark;
23978     { // import_from_as_name _loop0_34
23979         if (p->error_indicator) {
23980             p->level--;
23981             return NULL;
23982         }
23983         D(fprintf(stderr, "%*c> _gather_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_34"));
23984         alias_ty elem;
23985         asdl_seq * seq;
23986         if (
23987             (elem = import_from_as_name_rule(p))  // import_from_as_name
23988             &&
23989             (seq = _loop0_34_rule(p))  // _loop0_34
23990         )
23991         {
23992             D(fprintf(stderr, "%*c+ _gather_33[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_34"));
23993             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23994             goto done;
23995         }
23996         p->mark = _mark;
23997         D(fprintf(stderr, "%*c%s _gather_33[%d-%d]: %s failed!\n", p->level, ' ',
23998                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_34"));
23999     }
24000     _res = NULL;
24001   done:
24002     p->level--;
24003     return _res;
24004 }
24005 
24006 // _tmp_35: 'as' NAME
24007 static void *
_tmp_35_rule(Parser * p)24008 _tmp_35_rule(Parser *p)
24009 {
24010     if (p->level++ == MAXSTACK) {
24011         p->error_indicator = 1;
24012         PyErr_NoMemory();
24013     }
24014     if (p->error_indicator) {
24015         p->level--;
24016         return NULL;
24017     }
24018     void * _res = NULL;
24019     int _mark = p->mark;
24020     { // 'as' NAME
24021         if (p->error_indicator) {
24022             p->level--;
24023             return NULL;
24024         }
24025         D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24026         Token * _keyword;
24027         expr_ty z;
24028         if (
24029             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
24030             &&
24031             (z = _PyPegen_name_token(p))  // NAME
24032         )
24033         {
24034             D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24035             _res = z;
24036             if (_res == NULL && PyErr_Occurred()) {
24037                 p->error_indicator = 1;
24038                 p->level--;
24039                 return NULL;
24040             }
24041             goto done;
24042         }
24043         p->mark = _mark;
24044         D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
24045                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
24046     }
24047     _res = NULL;
24048   done:
24049     p->level--;
24050     return _res;
24051 }
24052 
24053 // _loop0_37: ',' dotted_as_name
24054 static asdl_seq *
_loop0_37_rule(Parser * p)24055 _loop0_37_rule(Parser *p)
24056 {
24057     if (p->level++ == MAXSTACK) {
24058         p->error_indicator = 1;
24059         PyErr_NoMemory();
24060     }
24061     if (p->error_indicator) {
24062         p->level--;
24063         return NULL;
24064     }
24065     void *_res = NULL;
24066     int _mark = p->mark;
24067     int _start_mark = p->mark;
24068     void **_children = PyMem_Malloc(sizeof(void *));
24069     if (!_children) {
24070         p->error_indicator = 1;
24071         PyErr_NoMemory();
24072         p->level--;
24073         return NULL;
24074     }
24075     Py_ssize_t _children_capacity = 1;
24076     Py_ssize_t _n = 0;
24077     { // ',' dotted_as_name
24078         if (p->error_indicator) {
24079             p->level--;
24080             return NULL;
24081         }
24082         D(fprintf(stderr, "%*c> _loop0_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
24083         Token * _literal;
24084         alias_ty elem;
24085         while (
24086             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24087             &&
24088             (elem = dotted_as_name_rule(p))  // dotted_as_name
24089         )
24090         {
24091             _res = elem;
24092             if (_res == NULL && PyErr_Occurred()) {
24093                 p->error_indicator = 1;
24094                 PyMem_Free(_children);
24095                 p->level--;
24096                 return NULL;
24097             }
24098             if (_n == _children_capacity) {
24099                 _children_capacity *= 2;
24100                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24101                 if (!_new_children) {
24102                     p->error_indicator = 1;
24103                     PyErr_NoMemory();
24104                     p->level--;
24105                     return NULL;
24106                 }
24107                 _children = _new_children;
24108             }
24109             _children[_n++] = _res;
24110             _mark = p->mark;
24111         }
24112         p->mark = _mark;
24113         D(fprintf(stderr, "%*c%s _loop0_37[%d-%d]: %s failed!\n", p->level, ' ',
24114                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
24115     }
24116     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24117     if (!_seq) {
24118         PyMem_Free(_children);
24119         p->error_indicator = 1;
24120         PyErr_NoMemory();
24121         p->level--;
24122         return NULL;
24123     }
24124     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24125     PyMem_Free(_children);
24126     _PyPegen_insert_memo(p, _start_mark, _loop0_37_type, _seq);
24127     p->level--;
24128     return _seq;
24129 }
24130 
24131 // _gather_36: dotted_as_name _loop0_37
24132 static asdl_seq *
_gather_36_rule(Parser * p)24133 _gather_36_rule(Parser *p)
24134 {
24135     if (p->level++ == MAXSTACK) {
24136         p->error_indicator = 1;
24137         PyErr_NoMemory();
24138     }
24139     if (p->error_indicator) {
24140         p->level--;
24141         return NULL;
24142     }
24143     asdl_seq * _res = NULL;
24144     int _mark = p->mark;
24145     { // dotted_as_name _loop0_37
24146         if (p->error_indicator) {
24147             p->level--;
24148             return NULL;
24149         }
24150         D(fprintf(stderr, "%*c> _gather_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_37"));
24151         alias_ty elem;
24152         asdl_seq * seq;
24153         if (
24154             (elem = dotted_as_name_rule(p))  // dotted_as_name
24155             &&
24156             (seq = _loop0_37_rule(p))  // _loop0_37
24157         )
24158         {
24159             D(fprintf(stderr, "%*c+ _gather_36[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_37"));
24160             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24161             goto done;
24162         }
24163         p->mark = _mark;
24164         D(fprintf(stderr, "%*c%s _gather_36[%d-%d]: %s failed!\n", p->level, ' ',
24165                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_37"));
24166     }
24167     _res = NULL;
24168   done:
24169     p->level--;
24170     return _res;
24171 }
24172 
24173 // _tmp_38: 'as' NAME
24174 static void *
_tmp_38_rule(Parser * p)24175 _tmp_38_rule(Parser *p)
24176 {
24177     if (p->level++ == MAXSTACK) {
24178         p->error_indicator = 1;
24179         PyErr_NoMemory();
24180     }
24181     if (p->error_indicator) {
24182         p->level--;
24183         return NULL;
24184     }
24185     void * _res = NULL;
24186     int _mark = p->mark;
24187     { // 'as' NAME
24188         if (p->error_indicator) {
24189             p->level--;
24190             return NULL;
24191         }
24192         D(fprintf(stderr, "%*c> _tmp_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24193         Token * _keyword;
24194         expr_ty z;
24195         if (
24196             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
24197             &&
24198             (z = _PyPegen_name_token(p))  // NAME
24199         )
24200         {
24201             D(fprintf(stderr, "%*c+ _tmp_38[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24202             _res = z;
24203             if (_res == NULL && PyErr_Occurred()) {
24204                 p->error_indicator = 1;
24205                 p->level--;
24206                 return NULL;
24207             }
24208             goto done;
24209         }
24210         p->mark = _mark;
24211         D(fprintf(stderr, "%*c%s _tmp_38[%d-%d]: %s failed!\n", p->level, ' ',
24212                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
24213     }
24214     _res = NULL;
24215   done:
24216     p->level--;
24217     return _res;
24218 }
24219 
24220 // _loop0_40: ',' with_item
24221 static asdl_seq *
_loop0_40_rule(Parser * p)24222 _loop0_40_rule(Parser *p)
24223 {
24224     if (p->level++ == MAXSTACK) {
24225         p->error_indicator = 1;
24226         PyErr_NoMemory();
24227     }
24228     if (p->error_indicator) {
24229         p->level--;
24230         return NULL;
24231     }
24232     void *_res = NULL;
24233     int _mark = p->mark;
24234     int _start_mark = p->mark;
24235     void **_children = PyMem_Malloc(sizeof(void *));
24236     if (!_children) {
24237         p->error_indicator = 1;
24238         PyErr_NoMemory();
24239         p->level--;
24240         return NULL;
24241     }
24242     Py_ssize_t _children_capacity = 1;
24243     Py_ssize_t _n = 0;
24244     { // ',' with_item
24245         if (p->error_indicator) {
24246             p->level--;
24247             return NULL;
24248         }
24249         D(fprintf(stderr, "%*c> _loop0_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
24250         Token * _literal;
24251         withitem_ty elem;
24252         while (
24253             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24254             &&
24255             (elem = with_item_rule(p))  // with_item
24256         )
24257         {
24258             _res = elem;
24259             if (_res == NULL && PyErr_Occurred()) {
24260                 p->error_indicator = 1;
24261                 PyMem_Free(_children);
24262                 p->level--;
24263                 return NULL;
24264             }
24265             if (_n == _children_capacity) {
24266                 _children_capacity *= 2;
24267                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24268                 if (!_new_children) {
24269                     p->error_indicator = 1;
24270                     PyErr_NoMemory();
24271                     p->level--;
24272                     return NULL;
24273                 }
24274                 _children = _new_children;
24275             }
24276             _children[_n++] = _res;
24277             _mark = p->mark;
24278         }
24279         p->mark = _mark;
24280         D(fprintf(stderr, "%*c%s _loop0_40[%d-%d]: %s failed!\n", p->level, ' ',
24281                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
24282     }
24283     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24284     if (!_seq) {
24285         PyMem_Free(_children);
24286         p->error_indicator = 1;
24287         PyErr_NoMemory();
24288         p->level--;
24289         return NULL;
24290     }
24291     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24292     PyMem_Free(_children);
24293     _PyPegen_insert_memo(p, _start_mark, _loop0_40_type, _seq);
24294     p->level--;
24295     return _seq;
24296 }
24297 
24298 // _gather_39: with_item _loop0_40
24299 static asdl_seq *
_gather_39_rule(Parser * p)24300 _gather_39_rule(Parser *p)
24301 {
24302     if (p->level++ == MAXSTACK) {
24303         p->error_indicator = 1;
24304         PyErr_NoMemory();
24305     }
24306     if (p->error_indicator) {
24307         p->level--;
24308         return NULL;
24309     }
24310     asdl_seq * _res = NULL;
24311     int _mark = p->mark;
24312     { // with_item _loop0_40
24313         if (p->error_indicator) {
24314             p->level--;
24315             return NULL;
24316         }
24317         D(fprintf(stderr, "%*c> _gather_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_40"));
24318         withitem_ty elem;
24319         asdl_seq * seq;
24320         if (
24321             (elem = with_item_rule(p))  // with_item
24322             &&
24323             (seq = _loop0_40_rule(p))  // _loop0_40
24324         )
24325         {
24326             D(fprintf(stderr, "%*c+ _gather_39[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_40"));
24327             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24328             goto done;
24329         }
24330         p->mark = _mark;
24331         D(fprintf(stderr, "%*c%s _gather_39[%d-%d]: %s failed!\n", p->level, ' ',
24332                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_40"));
24333     }
24334     _res = NULL;
24335   done:
24336     p->level--;
24337     return _res;
24338 }
24339 
24340 // _loop0_42: ',' with_item
24341 static asdl_seq *
_loop0_42_rule(Parser * p)24342 _loop0_42_rule(Parser *p)
24343 {
24344     if (p->level++ == MAXSTACK) {
24345         p->error_indicator = 1;
24346         PyErr_NoMemory();
24347     }
24348     if (p->error_indicator) {
24349         p->level--;
24350         return NULL;
24351     }
24352     void *_res = NULL;
24353     int _mark = p->mark;
24354     int _start_mark = p->mark;
24355     void **_children = PyMem_Malloc(sizeof(void *));
24356     if (!_children) {
24357         p->error_indicator = 1;
24358         PyErr_NoMemory();
24359         p->level--;
24360         return NULL;
24361     }
24362     Py_ssize_t _children_capacity = 1;
24363     Py_ssize_t _n = 0;
24364     { // ',' with_item
24365         if (p->error_indicator) {
24366             p->level--;
24367             return NULL;
24368         }
24369         D(fprintf(stderr, "%*c> _loop0_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
24370         Token * _literal;
24371         withitem_ty elem;
24372         while (
24373             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24374             &&
24375             (elem = with_item_rule(p))  // with_item
24376         )
24377         {
24378             _res = elem;
24379             if (_res == NULL && PyErr_Occurred()) {
24380                 p->error_indicator = 1;
24381                 PyMem_Free(_children);
24382                 p->level--;
24383                 return NULL;
24384             }
24385             if (_n == _children_capacity) {
24386                 _children_capacity *= 2;
24387                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24388                 if (!_new_children) {
24389                     p->error_indicator = 1;
24390                     PyErr_NoMemory();
24391                     p->level--;
24392                     return NULL;
24393                 }
24394                 _children = _new_children;
24395             }
24396             _children[_n++] = _res;
24397             _mark = p->mark;
24398         }
24399         p->mark = _mark;
24400         D(fprintf(stderr, "%*c%s _loop0_42[%d-%d]: %s failed!\n", p->level, ' ',
24401                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
24402     }
24403     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24404     if (!_seq) {
24405         PyMem_Free(_children);
24406         p->error_indicator = 1;
24407         PyErr_NoMemory();
24408         p->level--;
24409         return NULL;
24410     }
24411     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24412     PyMem_Free(_children);
24413     _PyPegen_insert_memo(p, _start_mark, _loop0_42_type, _seq);
24414     p->level--;
24415     return _seq;
24416 }
24417 
24418 // _gather_41: with_item _loop0_42
24419 static asdl_seq *
_gather_41_rule(Parser * p)24420 _gather_41_rule(Parser *p)
24421 {
24422     if (p->level++ == MAXSTACK) {
24423         p->error_indicator = 1;
24424         PyErr_NoMemory();
24425     }
24426     if (p->error_indicator) {
24427         p->level--;
24428         return NULL;
24429     }
24430     asdl_seq * _res = NULL;
24431     int _mark = p->mark;
24432     { // with_item _loop0_42
24433         if (p->error_indicator) {
24434             p->level--;
24435             return NULL;
24436         }
24437         D(fprintf(stderr, "%*c> _gather_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_42"));
24438         withitem_ty elem;
24439         asdl_seq * seq;
24440         if (
24441             (elem = with_item_rule(p))  // with_item
24442             &&
24443             (seq = _loop0_42_rule(p))  // _loop0_42
24444         )
24445         {
24446             D(fprintf(stderr, "%*c+ _gather_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_42"));
24447             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24448             goto done;
24449         }
24450         p->mark = _mark;
24451         D(fprintf(stderr, "%*c%s _gather_41[%d-%d]: %s failed!\n", p->level, ' ',
24452                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_42"));
24453     }
24454     _res = NULL;
24455   done:
24456     p->level--;
24457     return _res;
24458 }
24459 
24460 // _loop0_44: ',' with_item
24461 static asdl_seq *
_loop0_44_rule(Parser * p)24462 _loop0_44_rule(Parser *p)
24463 {
24464     if (p->level++ == MAXSTACK) {
24465         p->error_indicator = 1;
24466         PyErr_NoMemory();
24467     }
24468     if (p->error_indicator) {
24469         p->level--;
24470         return NULL;
24471     }
24472     void *_res = NULL;
24473     int _mark = p->mark;
24474     int _start_mark = p->mark;
24475     void **_children = PyMem_Malloc(sizeof(void *));
24476     if (!_children) {
24477         p->error_indicator = 1;
24478         PyErr_NoMemory();
24479         p->level--;
24480         return NULL;
24481     }
24482     Py_ssize_t _children_capacity = 1;
24483     Py_ssize_t _n = 0;
24484     { // ',' with_item
24485         if (p->error_indicator) {
24486             p->level--;
24487             return NULL;
24488         }
24489         D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
24490         Token * _literal;
24491         withitem_ty elem;
24492         while (
24493             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24494             &&
24495             (elem = with_item_rule(p))  // with_item
24496         )
24497         {
24498             _res = elem;
24499             if (_res == NULL && PyErr_Occurred()) {
24500                 p->error_indicator = 1;
24501                 PyMem_Free(_children);
24502                 p->level--;
24503                 return NULL;
24504             }
24505             if (_n == _children_capacity) {
24506                 _children_capacity *= 2;
24507                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24508                 if (!_new_children) {
24509                     p->error_indicator = 1;
24510                     PyErr_NoMemory();
24511                     p->level--;
24512                     return NULL;
24513                 }
24514                 _children = _new_children;
24515             }
24516             _children[_n++] = _res;
24517             _mark = p->mark;
24518         }
24519         p->mark = _mark;
24520         D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
24521                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
24522     }
24523     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24524     if (!_seq) {
24525         PyMem_Free(_children);
24526         p->error_indicator = 1;
24527         PyErr_NoMemory();
24528         p->level--;
24529         return NULL;
24530     }
24531     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24532     PyMem_Free(_children);
24533     _PyPegen_insert_memo(p, _start_mark, _loop0_44_type, _seq);
24534     p->level--;
24535     return _seq;
24536 }
24537 
24538 // _gather_43: with_item _loop0_44
24539 static asdl_seq *
_gather_43_rule(Parser * p)24540 _gather_43_rule(Parser *p)
24541 {
24542     if (p->level++ == MAXSTACK) {
24543         p->error_indicator = 1;
24544         PyErr_NoMemory();
24545     }
24546     if (p->error_indicator) {
24547         p->level--;
24548         return NULL;
24549     }
24550     asdl_seq * _res = NULL;
24551     int _mark = p->mark;
24552     { // with_item _loop0_44
24553         if (p->error_indicator) {
24554             p->level--;
24555             return NULL;
24556         }
24557         D(fprintf(stderr, "%*c> _gather_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_44"));
24558         withitem_ty elem;
24559         asdl_seq * seq;
24560         if (
24561             (elem = with_item_rule(p))  // with_item
24562             &&
24563             (seq = _loop0_44_rule(p))  // _loop0_44
24564         )
24565         {
24566             D(fprintf(stderr, "%*c+ _gather_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_44"));
24567             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24568             goto done;
24569         }
24570         p->mark = _mark;
24571         D(fprintf(stderr, "%*c%s _gather_43[%d-%d]: %s failed!\n", p->level, ' ',
24572                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_44"));
24573     }
24574     _res = NULL;
24575   done:
24576     p->level--;
24577     return _res;
24578 }
24579 
24580 // _loop0_46: ',' with_item
24581 static asdl_seq *
_loop0_46_rule(Parser * p)24582 _loop0_46_rule(Parser *p)
24583 {
24584     if (p->level++ == MAXSTACK) {
24585         p->error_indicator = 1;
24586         PyErr_NoMemory();
24587     }
24588     if (p->error_indicator) {
24589         p->level--;
24590         return NULL;
24591     }
24592     void *_res = NULL;
24593     int _mark = p->mark;
24594     int _start_mark = p->mark;
24595     void **_children = PyMem_Malloc(sizeof(void *));
24596     if (!_children) {
24597         p->error_indicator = 1;
24598         PyErr_NoMemory();
24599         p->level--;
24600         return NULL;
24601     }
24602     Py_ssize_t _children_capacity = 1;
24603     Py_ssize_t _n = 0;
24604     { // ',' with_item
24605         if (p->error_indicator) {
24606             p->level--;
24607             return NULL;
24608         }
24609         D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
24610         Token * _literal;
24611         withitem_ty elem;
24612         while (
24613             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24614             &&
24615             (elem = with_item_rule(p))  // with_item
24616         )
24617         {
24618             _res = elem;
24619             if (_res == NULL && PyErr_Occurred()) {
24620                 p->error_indicator = 1;
24621                 PyMem_Free(_children);
24622                 p->level--;
24623                 return NULL;
24624             }
24625             if (_n == _children_capacity) {
24626                 _children_capacity *= 2;
24627                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24628                 if (!_new_children) {
24629                     p->error_indicator = 1;
24630                     PyErr_NoMemory();
24631                     p->level--;
24632                     return NULL;
24633                 }
24634                 _children = _new_children;
24635             }
24636             _children[_n++] = _res;
24637             _mark = p->mark;
24638         }
24639         p->mark = _mark;
24640         D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
24641                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
24642     }
24643     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24644     if (!_seq) {
24645         PyMem_Free(_children);
24646         p->error_indicator = 1;
24647         PyErr_NoMemory();
24648         p->level--;
24649         return NULL;
24650     }
24651     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24652     PyMem_Free(_children);
24653     _PyPegen_insert_memo(p, _start_mark, _loop0_46_type, _seq);
24654     p->level--;
24655     return _seq;
24656 }
24657 
24658 // _gather_45: with_item _loop0_46
24659 static asdl_seq *
_gather_45_rule(Parser * p)24660 _gather_45_rule(Parser *p)
24661 {
24662     if (p->level++ == MAXSTACK) {
24663         p->error_indicator = 1;
24664         PyErr_NoMemory();
24665     }
24666     if (p->error_indicator) {
24667         p->level--;
24668         return NULL;
24669     }
24670     asdl_seq * _res = NULL;
24671     int _mark = p->mark;
24672     { // with_item _loop0_46
24673         if (p->error_indicator) {
24674             p->level--;
24675             return NULL;
24676         }
24677         D(fprintf(stderr, "%*c> _gather_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_46"));
24678         withitem_ty elem;
24679         asdl_seq * seq;
24680         if (
24681             (elem = with_item_rule(p))  // with_item
24682             &&
24683             (seq = _loop0_46_rule(p))  // _loop0_46
24684         )
24685         {
24686             D(fprintf(stderr, "%*c+ _gather_45[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_46"));
24687             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24688             goto done;
24689         }
24690         p->mark = _mark;
24691         D(fprintf(stderr, "%*c%s _gather_45[%d-%d]: %s failed!\n", p->level, ' ',
24692                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_46"));
24693     }
24694     _res = NULL;
24695   done:
24696     p->level--;
24697     return _res;
24698 }
24699 
24700 // _tmp_47: ',' | ')' | ':'
24701 static void *
_tmp_47_rule(Parser * p)24702 _tmp_47_rule(Parser *p)
24703 {
24704     if (p->level++ == MAXSTACK) {
24705         p->error_indicator = 1;
24706         PyErr_NoMemory();
24707     }
24708     if (p->error_indicator) {
24709         p->level--;
24710         return NULL;
24711     }
24712     void * _res = NULL;
24713     int _mark = p->mark;
24714     { // ','
24715         if (p->error_indicator) {
24716             p->level--;
24717             return NULL;
24718         }
24719         D(fprintf(stderr, "%*c> _tmp_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
24720         Token * _literal;
24721         if (
24722             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24723         )
24724         {
24725             D(fprintf(stderr, "%*c+ _tmp_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
24726             _res = _literal;
24727             goto done;
24728         }
24729         p->mark = _mark;
24730         D(fprintf(stderr, "%*c%s _tmp_47[%d-%d]: %s failed!\n", p->level, ' ',
24731                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
24732     }
24733     { // ')'
24734         if (p->error_indicator) {
24735             p->level--;
24736             return NULL;
24737         }
24738         D(fprintf(stderr, "%*c> _tmp_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
24739         Token * _literal;
24740         if (
24741             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
24742         )
24743         {
24744             D(fprintf(stderr, "%*c+ _tmp_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
24745             _res = _literal;
24746             goto done;
24747         }
24748         p->mark = _mark;
24749         D(fprintf(stderr, "%*c%s _tmp_47[%d-%d]: %s failed!\n", p->level, ' ',
24750                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
24751     }
24752     { // ':'
24753         if (p->error_indicator) {
24754             p->level--;
24755             return NULL;
24756         }
24757         D(fprintf(stderr, "%*c> _tmp_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
24758         Token * _literal;
24759         if (
24760             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24761         )
24762         {
24763             D(fprintf(stderr, "%*c+ _tmp_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
24764             _res = _literal;
24765             goto done;
24766         }
24767         p->mark = _mark;
24768         D(fprintf(stderr, "%*c%s _tmp_47[%d-%d]: %s failed!\n", p->level, ' ',
24769                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
24770     }
24771     _res = NULL;
24772   done:
24773     p->level--;
24774     return _res;
24775 }
24776 
24777 // _loop1_48: except_block
24778 static asdl_seq *
_loop1_48_rule(Parser * p)24779 _loop1_48_rule(Parser *p)
24780 {
24781     if (p->level++ == MAXSTACK) {
24782         p->error_indicator = 1;
24783         PyErr_NoMemory();
24784     }
24785     if (p->error_indicator) {
24786         p->level--;
24787         return NULL;
24788     }
24789     void *_res = NULL;
24790     int _mark = p->mark;
24791     int _start_mark = p->mark;
24792     void **_children = PyMem_Malloc(sizeof(void *));
24793     if (!_children) {
24794         p->error_indicator = 1;
24795         PyErr_NoMemory();
24796         p->level--;
24797         return NULL;
24798     }
24799     Py_ssize_t _children_capacity = 1;
24800     Py_ssize_t _n = 0;
24801     { // except_block
24802         if (p->error_indicator) {
24803             p->level--;
24804             return NULL;
24805         }
24806         D(fprintf(stderr, "%*c> _loop1_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
24807         excepthandler_ty except_block_var;
24808         while (
24809             (except_block_var = except_block_rule(p))  // except_block
24810         )
24811         {
24812             _res = except_block_var;
24813             if (_n == _children_capacity) {
24814                 _children_capacity *= 2;
24815                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24816                 if (!_new_children) {
24817                     p->error_indicator = 1;
24818                     PyErr_NoMemory();
24819                     p->level--;
24820                     return NULL;
24821                 }
24822                 _children = _new_children;
24823             }
24824             _children[_n++] = _res;
24825             _mark = p->mark;
24826         }
24827         p->mark = _mark;
24828         D(fprintf(stderr, "%*c%s _loop1_48[%d-%d]: %s failed!\n", p->level, ' ',
24829                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
24830     }
24831     if (_n == 0 || p->error_indicator) {
24832         PyMem_Free(_children);
24833         p->level--;
24834         return NULL;
24835     }
24836     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24837     if (!_seq) {
24838         PyMem_Free(_children);
24839         p->error_indicator = 1;
24840         PyErr_NoMemory();
24841         p->level--;
24842         return NULL;
24843     }
24844     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24845     PyMem_Free(_children);
24846     _PyPegen_insert_memo(p, _start_mark, _loop1_48_type, _seq);
24847     p->level--;
24848     return _seq;
24849 }
24850 
24851 // _tmp_49: 'as' NAME
24852 static void *
_tmp_49_rule(Parser * p)24853 _tmp_49_rule(Parser *p)
24854 {
24855     if (p->level++ == MAXSTACK) {
24856         p->error_indicator = 1;
24857         PyErr_NoMemory();
24858     }
24859     if (p->error_indicator) {
24860         p->level--;
24861         return NULL;
24862     }
24863     void * _res = NULL;
24864     int _mark = p->mark;
24865     { // 'as' NAME
24866         if (p->error_indicator) {
24867             p->level--;
24868             return NULL;
24869         }
24870         D(fprintf(stderr, "%*c> _tmp_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24871         Token * _keyword;
24872         expr_ty z;
24873         if (
24874             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
24875             &&
24876             (z = _PyPegen_name_token(p))  // NAME
24877         )
24878         {
24879             D(fprintf(stderr, "%*c+ _tmp_49[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24880             _res = z;
24881             if (_res == NULL && PyErr_Occurred()) {
24882                 p->error_indicator = 1;
24883                 p->level--;
24884                 return NULL;
24885             }
24886             goto done;
24887         }
24888         p->mark = _mark;
24889         D(fprintf(stderr, "%*c%s _tmp_49[%d-%d]: %s failed!\n", p->level, ' ',
24890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
24891     }
24892     _res = NULL;
24893   done:
24894     p->level--;
24895     return _res;
24896 }
24897 
24898 // _loop1_50: case_block
24899 static asdl_seq *
_loop1_50_rule(Parser * p)24900 _loop1_50_rule(Parser *p)
24901 {
24902     if (p->level++ == MAXSTACK) {
24903         p->error_indicator = 1;
24904         PyErr_NoMemory();
24905     }
24906     if (p->error_indicator) {
24907         p->level--;
24908         return NULL;
24909     }
24910     void *_res = NULL;
24911     int _mark = p->mark;
24912     int _start_mark = p->mark;
24913     void **_children = PyMem_Malloc(sizeof(void *));
24914     if (!_children) {
24915         p->error_indicator = 1;
24916         PyErr_NoMemory();
24917         p->level--;
24918         return NULL;
24919     }
24920     Py_ssize_t _children_capacity = 1;
24921     Py_ssize_t _n = 0;
24922     { // case_block
24923         if (p->error_indicator) {
24924             p->level--;
24925             return NULL;
24926         }
24927         D(fprintf(stderr, "%*c> _loop1_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
24928         match_case_ty case_block_var;
24929         while (
24930             (case_block_var = case_block_rule(p))  // case_block
24931         )
24932         {
24933             _res = case_block_var;
24934             if (_n == _children_capacity) {
24935                 _children_capacity *= 2;
24936                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24937                 if (!_new_children) {
24938                     p->error_indicator = 1;
24939                     PyErr_NoMemory();
24940                     p->level--;
24941                     return NULL;
24942                 }
24943                 _children = _new_children;
24944             }
24945             _children[_n++] = _res;
24946             _mark = p->mark;
24947         }
24948         p->mark = _mark;
24949         D(fprintf(stderr, "%*c%s _loop1_50[%d-%d]: %s failed!\n", p->level, ' ',
24950                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
24951     }
24952     if (_n == 0 || p->error_indicator) {
24953         PyMem_Free(_children);
24954         p->level--;
24955         return NULL;
24956     }
24957     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24958     if (!_seq) {
24959         PyMem_Free(_children);
24960         p->error_indicator = 1;
24961         PyErr_NoMemory();
24962         p->level--;
24963         return NULL;
24964     }
24965     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24966     PyMem_Free(_children);
24967     _PyPegen_insert_memo(p, _start_mark, _loop1_50_type, _seq);
24968     p->level--;
24969     return _seq;
24970 }
24971 
24972 // _loop0_52: '|' closed_pattern
24973 static asdl_seq *
_loop0_52_rule(Parser * p)24974 _loop0_52_rule(Parser *p)
24975 {
24976     if (p->level++ == MAXSTACK) {
24977         p->error_indicator = 1;
24978         PyErr_NoMemory();
24979     }
24980     if (p->error_indicator) {
24981         p->level--;
24982         return NULL;
24983     }
24984     void *_res = NULL;
24985     int _mark = p->mark;
24986     int _start_mark = p->mark;
24987     void **_children = PyMem_Malloc(sizeof(void *));
24988     if (!_children) {
24989         p->error_indicator = 1;
24990         PyErr_NoMemory();
24991         p->level--;
24992         return NULL;
24993     }
24994     Py_ssize_t _children_capacity = 1;
24995     Py_ssize_t _n = 0;
24996     { // '|' closed_pattern
24997         if (p->error_indicator) {
24998             p->level--;
24999             return NULL;
25000         }
25001         D(fprintf(stderr, "%*c> _loop0_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
25002         Token * _literal;
25003         pattern_ty elem;
25004         while (
25005             (_literal = _PyPegen_expect_token(p, 18))  // token='|'
25006             &&
25007             (elem = closed_pattern_rule(p))  // closed_pattern
25008         )
25009         {
25010             _res = elem;
25011             if (_res == NULL && PyErr_Occurred()) {
25012                 p->error_indicator = 1;
25013                 PyMem_Free(_children);
25014                 p->level--;
25015                 return NULL;
25016             }
25017             if (_n == _children_capacity) {
25018                 _children_capacity *= 2;
25019                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25020                 if (!_new_children) {
25021                     p->error_indicator = 1;
25022                     PyErr_NoMemory();
25023                     p->level--;
25024                     return NULL;
25025                 }
25026                 _children = _new_children;
25027             }
25028             _children[_n++] = _res;
25029             _mark = p->mark;
25030         }
25031         p->mark = _mark;
25032         D(fprintf(stderr, "%*c%s _loop0_52[%d-%d]: %s failed!\n", p->level, ' ',
25033                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
25034     }
25035     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25036     if (!_seq) {
25037         PyMem_Free(_children);
25038         p->error_indicator = 1;
25039         PyErr_NoMemory();
25040         p->level--;
25041         return NULL;
25042     }
25043     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25044     PyMem_Free(_children);
25045     _PyPegen_insert_memo(p, _start_mark, _loop0_52_type, _seq);
25046     p->level--;
25047     return _seq;
25048 }
25049 
25050 // _gather_51: closed_pattern _loop0_52
25051 static asdl_seq *
_gather_51_rule(Parser * p)25052 _gather_51_rule(Parser *p)
25053 {
25054     if (p->level++ == MAXSTACK) {
25055         p->error_indicator = 1;
25056         PyErr_NoMemory();
25057     }
25058     if (p->error_indicator) {
25059         p->level--;
25060         return NULL;
25061     }
25062     asdl_seq * _res = NULL;
25063     int _mark = p->mark;
25064     { // closed_pattern _loop0_52
25065         if (p->error_indicator) {
25066             p->level--;
25067             return NULL;
25068         }
25069         D(fprintf(stderr, "%*c> _gather_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_52"));
25070         pattern_ty elem;
25071         asdl_seq * seq;
25072         if (
25073             (elem = closed_pattern_rule(p))  // closed_pattern
25074             &&
25075             (seq = _loop0_52_rule(p))  // _loop0_52
25076         )
25077         {
25078             D(fprintf(stderr, "%*c+ _gather_51[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_52"));
25079             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25080             goto done;
25081         }
25082         p->mark = _mark;
25083         D(fprintf(stderr, "%*c%s _gather_51[%d-%d]: %s failed!\n", p->level, ' ',
25084                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_52"));
25085     }
25086     _res = NULL;
25087   done:
25088     p->level--;
25089     return _res;
25090 }
25091 
25092 // _tmp_53: '+' | '-'
25093 static void *
_tmp_53_rule(Parser * p)25094 _tmp_53_rule(Parser *p)
25095 {
25096     if (p->level++ == MAXSTACK) {
25097         p->error_indicator = 1;
25098         PyErr_NoMemory();
25099     }
25100     if (p->error_indicator) {
25101         p->level--;
25102         return NULL;
25103     }
25104     void * _res = NULL;
25105     int _mark = p->mark;
25106     { // '+'
25107         if (p->error_indicator) {
25108             p->level--;
25109             return NULL;
25110         }
25111         D(fprintf(stderr, "%*c> _tmp_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
25112         Token * _literal;
25113         if (
25114             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
25115         )
25116         {
25117             D(fprintf(stderr, "%*c+ _tmp_53[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
25118             _res = _literal;
25119             goto done;
25120         }
25121         p->mark = _mark;
25122         D(fprintf(stderr, "%*c%s _tmp_53[%d-%d]: %s failed!\n", p->level, ' ',
25123                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
25124     }
25125     { // '-'
25126         if (p->error_indicator) {
25127             p->level--;
25128             return NULL;
25129         }
25130         D(fprintf(stderr, "%*c> _tmp_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
25131         Token * _literal;
25132         if (
25133             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
25134         )
25135         {
25136             D(fprintf(stderr, "%*c+ _tmp_53[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
25137             _res = _literal;
25138             goto done;
25139         }
25140         p->mark = _mark;
25141         D(fprintf(stderr, "%*c%s _tmp_53[%d-%d]: %s failed!\n", p->level, ' ',
25142                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
25143     }
25144     _res = NULL;
25145   done:
25146     p->level--;
25147     return _res;
25148 }
25149 
25150 // _tmp_54: '+' | '-'
25151 static void *
_tmp_54_rule(Parser * p)25152 _tmp_54_rule(Parser *p)
25153 {
25154     if (p->level++ == MAXSTACK) {
25155         p->error_indicator = 1;
25156         PyErr_NoMemory();
25157     }
25158     if (p->error_indicator) {
25159         p->level--;
25160         return NULL;
25161     }
25162     void * _res = NULL;
25163     int _mark = p->mark;
25164     { // '+'
25165         if (p->error_indicator) {
25166             p->level--;
25167             return NULL;
25168         }
25169         D(fprintf(stderr, "%*c> _tmp_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
25170         Token * _literal;
25171         if (
25172             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
25173         )
25174         {
25175             D(fprintf(stderr, "%*c+ _tmp_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
25176             _res = _literal;
25177             goto done;
25178         }
25179         p->mark = _mark;
25180         D(fprintf(stderr, "%*c%s _tmp_54[%d-%d]: %s failed!\n", p->level, ' ',
25181                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
25182     }
25183     { // '-'
25184         if (p->error_indicator) {
25185             p->level--;
25186             return NULL;
25187         }
25188         D(fprintf(stderr, "%*c> _tmp_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
25189         Token * _literal;
25190         if (
25191             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
25192         )
25193         {
25194             D(fprintf(stderr, "%*c+ _tmp_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
25195             _res = _literal;
25196             goto done;
25197         }
25198         p->mark = _mark;
25199         D(fprintf(stderr, "%*c%s _tmp_54[%d-%d]: %s failed!\n", p->level, ' ',
25200                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
25201     }
25202     _res = NULL;
25203   done:
25204     p->level--;
25205     return _res;
25206 }
25207 
25208 // _tmp_55: '.' | '(' | '='
25209 static void *
_tmp_55_rule(Parser * p)25210 _tmp_55_rule(Parser *p)
25211 {
25212     if (p->level++ == MAXSTACK) {
25213         p->error_indicator = 1;
25214         PyErr_NoMemory();
25215     }
25216     if (p->error_indicator) {
25217         p->level--;
25218         return NULL;
25219     }
25220     void * _res = NULL;
25221     int _mark = p->mark;
25222     { // '.'
25223         if (p->error_indicator) {
25224             p->level--;
25225             return NULL;
25226         }
25227         D(fprintf(stderr, "%*c> _tmp_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
25228         Token * _literal;
25229         if (
25230             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
25231         )
25232         {
25233             D(fprintf(stderr, "%*c+ _tmp_55[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
25234             _res = _literal;
25235             goto done;
25236         }
25237         p->mark = _mark;
25238         D(fprintf(stderr, "%*c%s _tmp_55[%d-%d]: %s failed!\n", p->level, ' ',
25239                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
25240     }
25241     { // '('
25242         if (p->error_indicator) {
25243             p->level--;
25244             return NULL;
25245         }
25246         D(fprintf(stderr, "%*c> _tmp_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
25247         Token * _literal;
25248         if (
25249             (_literal = _PyPegen_expect_token(p, 7))  // token='('
25250         )
25251         {
25252             D(fprintf(stderr, "%*c+ _tmp_55[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
25253             _res = _literal;
25254             goto done;
25255         }
25256         p->mark = _mark;
25257         D(fprintf(stderr, "%*c%s _tmp_55[%d-%d]: %s failed!\n", p->level, ' ',
25258                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
25259     }
25260     { // '='
25261         if (p->error_indicator) {
25262             p->level--;
25263             return NULL;
25264         }
25265         D(fprintf(stderr, "%*c> _tmp_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
25266         Token * _literal;
25267         if (
25268             (_literal = _PyPegen_expect_token(p, 22))  // token='='
25269         )
25270         {
25271             D(fprintf(stderr, "%*c+ _tmp_55[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
25272             _res = _literal;
25273             goto done;
25274         }
25275         p->mark = _mark;
25276         D(fprintf(stderr, "%*c%s _tmp_55[%d-%d]: %s failed!\n", p->level, ' ',
25277                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
25278     }
25279     _res = NULL;
25280   done:
25281     p->level--;
25282     return _res;
25283 }
25284 
25285 // _tmp_56: '.' | '(' | '='
25286 static void *
_tmp_56_rule(Parser * p)25287 _tmp_56_rule(Parser *p)
25288 {
25289     if (p->level++ == MAXSTACK) {
25290         p->error_indicator = 1;
25291         PyErr_NoMemory();
25292     }
25293     if (p->error_indicator) {
25294         p->level--;
25295         return NULL;
25296     }
25297     void * _res = NULL;
25298     int _mark = p->mark;
25299     { // '.'
25300         if (p->error_indicator) {
25301             p->level--;
25302             return NULL;
25303         }
25304         D(fprintf(stderr, "%*c> _tmp_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
25305         Token * _literal;
25306         if (
25307             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
25308         )
25309         {
25310             D(fprintf(stderr, "%*c+ _tmp_56[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
25311             _res = _literal;
25312             goto done;
25313         }
25314         p->mark = _mark;
25315         D(fprintf(stderr, "%*c%s _tmp_56[%d-%d]: %s failed!\n", p->level, ' ',
25316                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
25317     }
25318     { // '('
25319         if (p->error_indicator) {
25320             p->level--;
25321             return NULL;
25322         }
25323         D(fprintf(stderr, "%*c> _tmp_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
25324         Token * _literal;
25325         if (
25326             (_literal = _PyPegen_expect_token(p, 7))  // token='('
25327         )
25328         {
25329             D(fprintf(stderr, "%*c+ _tmp_56[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
25330             _res = _literal;
25331             goto done;
25332         }
25333         p->mark = _mark;
25334         D(fprintf(stderr, "%*c%s _tmp_56[%d-%d]: %s failed!\n", p->level, ' ',
25335                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
25336     }
25337     { // '='
25338         if (p->error_indicator) {
25339             p->level--;
25340             return NULL;
25341         }
25342         D(fprintf(stderr, "%*c> _tmp_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
25343         Token * _literal;
25344         if (
25345             (_literal = _PyPegen_expect_token(p, 22))  // token='='
25346         )
25347         {
25348             D(fprintf(stderr, "%*c+ _tmp_56[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
25349             _res = _literal;
25350             goto done;
25351         }
25352         p->mark = _mark;
25353         D(fprintf(stderr, "%*c%s _tmp_56[%d-%d]: %s failed!\n", p->level, ' ',
25354                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
25355     }
25356     _res = NULL;
25357   done:
25358     p->level--;
25359     return _res;
25360 }
25361 
25362 // _loop0_58: ',' maybe_star_pattern
25363 static asdl_seq *
_loop0_58_rule(Parser * p)25364 _loop0_58_rule(Parser *p)
25365 {
25366     if (p->level++ == MAXSTACK) {
25367         p->error_indicator = 1;
25368         PyErr_NoMemory();
25369     }
25370     if (p->error_indicator) {
25371         p->level--;
25372         return NULL;
25373     }
25374     void *_res = NULL;
25375     int _mark = p->mark;
25376     int _start_mark = p->mark;
25377     void **_children = PyMem_Malloc(sizeof(void *));
25378     if (!_children) {
25379         p->error_indicator = 1;
25380         PyErr_NoMemory();
25381         p->level--;
25382         return NULL;
25383     }
25384     Py_ssize_t _children_capacity = 1;
25385     Py_ssize_t _n = 0;
25386     { // ',' maybe_star_pattern
25387         if (p->error_indicator) {
25388             p->level--;
25389             return NULL;
25390         }
25391         D(fprintf(stderr, "%*c> _loop0_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
25392         Token * _literal;
25393         pattern_ty elem;
25394         while (
25395             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25396             &&
25397             (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
25398         )
25399         {
25400             _res = elem;
25401             if (_res == NULL && PyErr_Occurred()) {
25402                 p->error_indicator = 1;
25403                 PyMem_Free(_children);
25404                 p->level--;
25405                 return NULL;
25406             }
25407             if (_n == _children_capacity) {
25408                 _children_capacity *= 2;
25409                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25410                 if (!_new_children) {
25411                     p->error_indicator = 1;
25412                     PyErr_NoMemory();
25413                     p->level--;
25414                     return NULL;
25415                 }
25416                 _children = _new_children;
25417             }
25418             _children[_n++] = _res;
25419             _mark = p->mark;
25420         }
25421         p->mark = _mark;
25422         D(fprintf(stderr, "%*c%s _loop0_58[%d-%d]: %s failed!\n", p->level, ' ',
25423                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
25424     }
25425     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25426     if (!_seq) {
25427         PyMem_Free(_children);
25428         p->error_indicator = 1;
25429         PyErr_NoMemory();
25430         p->level--;
25431         return NULL;
25432     }
25433     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25434     PyMem_Free(_children);
25435     _PyPegen_insert_memo(p, _start_mark, _loop0_58_type, _seq);
25436     p->level--;
25437     return _seq;
25438 }
25439 
25440 // _gather_57: maybe_star_pattern _loop0_58
25441 static asdl_seq *
_gather_57_rule(Parser * p)25442 _gather_57_rule(Parser *p)
25443 {
25444     if (p->level++ == MAXSTACK) {
25445         p->error_indicator = 1;
25446         PyErr_NoMemory();
25447     }
25448     if (p->error_indicator) {
25449         p->level--;
25450         return NULL;
25451     }
25452     asdl_seq * _res = NULL;
25453     int _mark = p->mark;
25454     { // maybe_star_pattern _loop0_58
25455         if (p->error_indicator) {
25456             p->level--;
25457             return NULL;
25458         }
25459         D(fprintf(stderr, "%*c> _gather_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_58"));
25460         pattern_ty elem;
25461         asdl_seq * seq;
25462         if (
25463             (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
25464             &&
25465             (seq = _loop0_58_rule(p))  // _loop0_58
25466         )
25467         {
25468             D(fprintf(stderr, "%*c+ _gather_57[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_58"));
25469             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25470             goto done;
25471         }
25472         p->mark = _mark;
25473         D(fprintf(stderr, "%*c%s _gather_57[%d-%d]: %s failed!\n", p->level, ' ',
25474                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_58"));
25475     }
25476     _res = NULL;
25477   done:
25478     p->level--;
25479     return _res;
25480 }
25481 
25482 // _loop0_60: ',' key_value_pattern
25483 static asdl_seq *
_loop0_60_rule(Parser * p)25484 _loop0_60_rule(Parser *p)
25485 {
25486     if (p->level++ == MAXSTACK) {
25487         p->error_indicator = 1;
25488         PyErr_NoMemory();
25489     }
25490     if (p->error_indicator) {
25491         p->level--;
25492         return NULL;
25493     }
25494     void *_res = NULL;
25495     int _mark = p->mark;
25496     int _start_mark = p->mark;
25497     void **_children = PyMem_Malloc(sizeof(void *));
25498     if (!_children) {
25499         p->error_indicator = 1;
25500         PyErr_NoMemory();
25501         p->level--;
25502         return NULL;
25503     }
25504     Py_ssize_t _children_capacity = 1;
25505     Py_ssize_t _n = 0;
25506     { // ',' key_value_pattern
25507         if (p->error_indicator) {
25508             p->level--;
25509             return NULL;
25510         }
25511         D(fprintf(stderr, "%*c> _loop0_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
25512         Token * _literal;
25513         KeyPatternPair* elem;
25514         while (
25515             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25516             &&
25517             (elem = key_value_pattern_rule(p))  // key_value_pattern
25518         )
25519         {
25520             _res = elem;
25521             if (_res == NULL && PyErr_Occurred()) {
25522                 p->error_indicator = 1;
25523                 PyMem_Free(_children);
25524                 p->level--;
25525                 return NULL;
25526             }
25527             if (_n == _children_capacity) {
25528                 _children_capacity *= 2;
25529                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25530                 if (!_new_children) {
25531                     p->error_indicator = 1;
25532                     PyErr_NoMemory();
25533                     p->level--;
25534                     return NULL;
25535                 }
25536                 _children = _new_children;
25537             }
25538             _children[_n++] = _res;
25539             _mark = p->mark;
25540         }
25541         p->mark = _mark;
25542         D(fprintf(stderr, "%*c%s _loop0_60[%d-%d]: %s failed!\n", p->level, ' ',
25543                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
25544     }
25545     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25546     if (!_seq) {
25547         PyMem_Free(_children);
25548         p->error_indicator = 1;
25549         PyErr_NoMemory();
25550         p->level--;
25551         return NULL;
25552     }
25553     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25554     PyMem_Free(_children);
25555     _PyPegen_insert_memo(p, _start_mark, _loop0_60_type, _seq);
25556     p->level--;
25557     return _seq;
25558 }
25559 
25560 // _gather_59: key_value_pattern _loop0_60
25561 static asdl_seq *
_gather_59_rule(Parser * p)25562 _gather_59_rule(Parser *p)
25563 {
25564     if (p->level++ == MAXSTACK) {
25565         p->error_indicator = 1;
25566         PyErr_NoMemory();
25567     }
25568     if (p->error_indicator) {
25569         p->level--;
25570         return NULL;
25571     }
25572     asdl_seq * _res = NULL;
25573     int _mark = p->mark;
25574     { // key_value_pattern _loop0_60
25575         if (p->error_indicator) {
25576             p->level--;
25577             return NULL;
25578         }
25579         D(fprintf(stderr, "%*c> _gather_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_60"));
25580         KeyPatternPair* elem;
25581         asdl_seq * seq;
25582         if (
25583             (elem = key_value_pattern_rule(p))  // key_value_pattern
25584             &&
25585             (seq = _loop0_60_rule(p))  // _loop0_60
25586         )
25587         {
25588             D(fprintf(stderr, "%*c+ _gather_59[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_60"));
25589             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25590             goto done;
25591         }
25592         p->mark = _mark;
25593         D(fprintf(stderr, "%*c%s _gather_59[%d-%d]: %s failed!\n", p->level, ' ',
25594                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_60"));
25595     }
25596     _res = NULL;
25597   done:
25598     p->level--;
25599     return _res;
25600 }
25601 
25602 // _tmp_61: literal_expr | attr
25603 static void *
_tmp_61_rule(Parser * p)25604 _tmp_61_rule(Parser *p)
25605 {
25606     if (p->level++ == MAXSTACK) {
25607         p->error_indicator = 1;
25608         PyErr_NoMemory();
25609     }
25610     if (p->error_indicator) {
25611         p->level--;
25612         return NULL;
25613     }
25614     void * _res = NULL;
25615     int _mark = p->mark;
25616     { // literal_expr
25617         if (p->error_indicator) {
25618             p->level--;
25619             return NULL;
25620         }
25621         D(fprintf(stderr, "%*c> _tmp_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
25622         expr_ty literal_expr_var;
25623         if (
25624             (literal_expr_var = literal_expr_rule(p))  // literal_expr
25625         )
25626         {
25627             D(fprintf(stderr, "%*c+ _tmp_61[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
25628             _res = literal_expr_var;
25629             goto done;
25630         }
25631         p->mark = _mark;
25632         D(fprintf(stderr, "%*c%s _tmp_61[%d-%d]: %s failed!\n", p->level, ' ',
25633                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
25634     }
25635     { // attr
25636         if (p->error_indicator) {
25637             p->level--;
25638             return NULL;
25639         }
25640         D(fprintf(stderr, "%*c> _tmp_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
25641         expr_ty attr_var;
25642         if (
25643             (attr_var = attr_rule(p))  // attr
25644         )
25645         {
25646             D(fprintf(stderr, "%*c+ _tmp_61[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
25647             _res = attr_var;
25648             goto done;
25649         }
25650         p->mark = _mark;
25651         D(fprintf(stderr, "%*c%s _tmp_61[%d-%d]: %s failed!\n", p->level, ' ',
25652                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
25653     }
25654     _res = NULL;
25655   done:
25656     p->level--;
25657     return _res;
25658 }
25659 
25660 // _loop0_63: ',' pattern
25661 static asdl_seq *
_loop0_63_rule(Parser * p)25662 _loop0_63_rule(Parser *p)
25663 {
25664     if (p->level++ == MAXSTACK) {
25665         p->error_indicator = 1;
25666         PyErr_NoMemory();
25667     }
25668     if (p->error_indicator) {
25669         p->level--;
25670         return NULL;
25671     }
25672     void *_res = NULL;
25673     int _mark = p->mark;
25674     int _start_mark = p->mark;
25675     void **_children = PyMem_Malloc(sizeof(void *));
25676     if (!_children) {
25677         p->error_indicator = 1;
25678         PyErr_NoMemory();
25679         p->level--;
25680         return NULL;
25681     }
25682     Py_ssize_t _children_capacity = 1;
25683     Py_ssize_t _n = 0;
25684     { // ',' pattern
25685         if (p->error_indicator) {
25686             p->level--;
25687             return NULL;
25688         }
25689         D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
25690         Token * _literal;
25691         pattern_ty elem;
25692         while (
25693             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25694             &&
25695             (elem = pattern_rule(p))  // pattern
25696         )
25697         {
25698             _res = elem;
25699             if (_res == NULL && PyErr_Occurred()) {
25700                 p->error_indicator = 1;
25701                 PyMem_Free(_children);
25702                 p->level--;
25703                 return NULL;
25704             }
25705             if (_n == _children_capacity) {
25706                 _children_capacity *= 2;
25707                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25708                 if (!_new_children) {
25709                     p->error_indicator = 1;
25710                     PyErr_NoMemory();
25711                     p->level--;
25712                     return NULL;
25713                 }
25714                 _children = _new_children;
25715             }
25716             _children[_n++] = _res;
25717             _mark = p->mark;
25718         }
25719         p->mark = _mark;
25720         D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
25721                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
25722     }
25723     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25724     if (!_seq) {
25725         PyMem_Free(_children);
25726         p->error_indicator = 1;
25727         PyErr_NoMemory();
25728         p->level--;
25729         return NULL;
25730     }
25731     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25732     PyMem_Free(_children);
25733     _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
25734     p->level--;
25735     return _seq;
25736 }
25737 
25738 // _gather_62: pattern _loop0_63
25739 static asdl_seq *
_gather_62_rule(Parser * p)25740 _gather_62_rule(Parser *p)
25741 {
25742     if (p->level++ == MAXSTACK) {
25743         p->error_indicator = 1;
25744         PyErr_NoMemory();
25745     }
25746     if (p->error_indicator) {
25747         p->level--;
25748         return NULL;
25749     }
25750     asdl_seq * _res = NULL;
25751     int _mark = p->mark;
25752     { // pattern _loop0_63
25753         if (p->error_indicator) {
25754             p->level--;
25755             return NULL;
25756         }
25757         D(fprintf(stderr, "%*c> _gather_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_63"));
25758         pattern_ty elem;
25759         asdl_seq * seq;
25760         if (
25761             (elem = pattern_rule(p))  // pattern
25762             &&
25763             (seq = _loop0_63_rule(p))  // _loop0_63
25764         )
25765         {
25766             D(fprintf(stderr, "%*c+ _gather_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_63"));
25767             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25768             goto done;
25769         }
25770         p->mark = _mark;
25771         D(fprintf(stderr, "%*c%s _gather_62[%d-%d]: %s failed!\n", p->level, ' ',
25772                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_63"));
25773     }
25774     _res = NULL;
25775   done:
25776     p->level--;
25777     return _res;
25778 }
25779 
25780 // _loop0_65: ',' keyword_pattern
25781 static asdl_seq *
_loop0_65_rule(Parser * p)25782 _loop0_65_rule(Parser *p)
25783 {
25784     if (p->level++ == MAXSTACK) {
25785         p->error_indicator = 1;
25786         PyErr_NoMemory();
25787     }
25788     if (p->error_indicator) {
25789         p->level--;
25790         return NULL;
25791     }
25792     void *_res = NULL;
25793     int _mark = p->mark;
25794     int _start_mark = p->mark;
25795     void **_children = PyMem_Malloc(sizeof(void *));
25796     if (!_children) {
25797         p->error_indicator = 1;
25798         PyErr_NoMemory();
25799         p->level--;
25800         return NULL;
25801     }
25802     Py_ssize_t _children_capacity = 1;
25803     Py_ssize_t _n = 0;
25804     { // ',' keyword_pattern
25805         if (p->error_indicator) {
25806             p->level--;
25807             return NULL;
25808         }
25809         D(fprintf(stderr, "%*c> _loop0_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
25810         Token * _literal;
25811         KeyPatternPair* elem;
25812         while (
25813             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25814             &&
25815             (elem = keyword_pattern_rule(p))  // keyword_pattern
25816         )
25817         {
25818             _res = elem;
25819             if (_res == NULL && PyErr_Occurred()) {
25820                 p->error_indicator = 1;
25821                 PyMem_Free(_children);
25822                 p->level--;
25823                 return NULL;
25824             }
25825             if (_n == _children_capacity) {
25826                 _children_capacity *= 2;
25827                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25828                 if (!_new_children) {
25829                     p->error_indicator = 1;
25830                     PyErr_NoMemory();
25831                     p->level--;
25832                     return NULL;
25833                 }
25834                 _children = _new_children;
25835             }
25836             _children[_n++] = _res;
25837             _mark = p->mark;
25838         }
25839         p->mark = _mark;
25840         D(fprintf(stderr, "%*c%s _loop0_65[%d-%d]: %s failed!\n", p->level, ' ',
25841                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
25842     }
25843     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25844     if (!_seq) {
25845         PyMem_Free(_children);
25846         p->error_indicator = 1;
25847         PyErr_NoMemory();
25848         p->level--;
25849         return NULL;
25850     }
25851     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25852     PyMem_Free(_children);
25853     _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
25854     p->level--;
25855     return _seq;
25856 }
25857 
25858 // _gather_64: keyword_pattern _loop0_65
25859 static asdl_seq *
_gather_64_rule(Parser * p)25860 _gather_64_rule(Parser *p)
25861 {
25862     if (p->level++ == MAXSTACK) {
25863         p->error_indicator = 1;
25864         PyErr_NoMemory();
25865     }
25866     if (p->error_indicator) {
25867         p->level--;
25868         return NULL;
25869     }
25870     asdl_seq * _res = NULL;
25871     int _mark = p->mark;
25872     { // keyword_pattern _loop0_65
25873         if (p->error_indicator) {
25874             p->level--;
25875             return NULL;
25876         }
25877         D(fprintf(stderr, "%*c> _gather_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_65"));
25878         KeyPatternPair* elem;
25879         asdl_seq * seq;
25880         if (
25881             (elem = keyword_pattern_rule(p))  // keyword_pattern
25882             &&
25883             (seq = _loop0_65_rule(p))  // _loop0_65
25884         )
25885         {
25886             D(fprintf(stderr, "%*c+ _gather_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_65"));
25887             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25888             goto done;
25889         }
25890         p->mark = _mark;
25891         D(fprintf(stderr, "%*c%s _gather_64[%d-%d]: %s failed!\n", p->level, ' ',
25892                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_65"));
25893     }
25894     _res = NULL;
25895   done:
25896     p->level--;
25897     return _res;
25898 }
25899 
25900 // _tmp_66: 'from' expression
25901 static void *
_tmp_66_rule(Parser * p)25902 _tmp_66_rule(Parser *p)
25903 {
25904     if (p->level++ == MAXSTACK) {
25905         p->error_indicator = 1;
25906         PyErr_NoMemory();
25907     }
25908     if (p->error_indicator) {
25909         p->level--;
25910         return NULL;
25911     }
25912     void * _res = NULL;
25913     int _mark = p->mark;
25914     { // 'from' expression
25915         if (p->error_indicator) {
25916             p->level--;
25917             return NULL;
25918         }
25919         D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' expression"));
25920         Token * _keyword;
25921         expr_ty z;
25922         if (
25923             (_keyword = _PyPegen_expect_token(p, 514))  // token='from'
25924             &&
25925             (z = expression_rule(p))  // expression
25926         )
25927         {
25928             D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' expression"));
25929             _res = z;
25930             if (_res == NULL && PyErr_Occurred()) {
25931                 p->error_indicator = 1;
25932                 p->level--;
25933                 return NULL;
25934             }
25935             goto done;
25936         }
25937         p->mark = _mark;
25938         D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
25939                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' expression"));
25940     }
25941     _res = NULL;
25942   done:
25943     p->level--;
25944     return _res;
25945 }
25946 
25947 // _tmp_67: '->' expression
25948 static void *
_tmp_67_rule(Parser * p)25949 _tmp_67_rule(Parser *p)
25950 {
25951     if (p->level++ == MAXSTACK) {
25952         p->error_indicator = 1;
25953         PyErr_NoMemory();
25954     }
25955     if (p->error_indicator) {
25956         p->level--;
25957         return NULL;
25958     }
25959     void * _res = NULL;
25960     int _mark = p->mark;
25961     { // '->' expression
25962         if (p->error_indicator) {
25963             p->level--;
25964             return NULL;
25965         }
25966         D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25967         Token * _literal;
25968         expr_ty z;
25969         if (
25970             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
25971             &&
25972             (z = expression_rule(p))  // expression
25973         )
25974         {
25975             D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25976             _res = z;
25977             if (_res == NULL && PyErr_Occurred()) {
25978                 p->error_indicator = 1;
25979                 p->level--;
25980                 return NULL;
25981             }
25982             goto done;
25983         }
25984         p->mark = _mark;
25985         D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
25986                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
25987     }
25988     _res = NULL;
25989   done:
25990     p->level--;
25991     return _res;
25992 }
25993 
25994 // _tmp_68: '->' expression
25995 static void *
_tmp_68_rule(Parser * p)25996 _tmp_68_rule(Parser *p)
25997 {
25998     if (p->level++ == MAXSTACK) {
25999         p->error_indicator = 1;
26000         PyErr_NoMemory();
26001     }
26002     if (p->error_indicator) {
26003         p->level--;
26004         return NULL;
26005     }
26006     void * _res = NULL;
26007     int _mark = p->mark;
26008     { // '->' expression
26009         if (p->error_indicator) {
26010             p->level--;
26011             return NULL;
26012         }
26013         D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
26014         Token * _literal;
26015         expr_ty z;
26016         if (
26017             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
26018             &&
26019             (z = expression_rule(p))  // expression
26020         )
26021         {
26022             D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
26023             _res = z;
26024             if (_res == NULL && PyErr_Occurred()) {
26025                 p->error_indicator = 1;
26026                 p->level--;
26027                 return NULL;
26028             }
26029             goto done;
26030         }
26031         p->mark = _mark;
26032         D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
26033                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
26034     }
26035     _res = NULL;
26036   done:
26037     p->level--;
26038     return _res;
26039 }
26040 
26041 // _tmp_69: NEWLINE INDENT
26042 static void *
_tmp_69_rule(Parser * p)26043 _tmp_69_rule(Parser *p)
26044 {
26045     if (p->level++ == MAXSTACK) {
26046         p->error_indicator = 1;
26047         PyErr_NoMemory();
26048     }
26049     if (p->error_indicator) {
26050         p->level--;
26051         return NULL;
26052     }
26053     void * _res = NULL;
26054     int _mark = p->mark;
26055     { // NEWLINE INDENT
26056         if (p->error_indicator) {
26057             p->level--;
26058             return NULL;
26059         }
26060         D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
26061         Token * indent_var;
26062         Token * newline_var;
26063         if (
26064             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
26065             &&
26066             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
26067         )
26068         {
26069             D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
26070             _res = _PyPegen_dummy_name(p, newline_var, indent_var);
26071             goto done;
26072         }
26073         p->mark = _mark;
26074         D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
26075                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
26076     }
26077     _res = NULL;
26078   done:
26079     p->level--;
26080     return _res;
26081 }
26082 
26083 // _loop0_70: param_no_default
26084 static asdl_seq *
_loop0_70_rule(Parser * p)26085 _loop0_70_rule(Parser *p)
26086 {
26087     if (p->level++ == MAXSTACK) {
26088         p->error_indicator = 1;
26089         PyErr_NoMemory();
26090     }
26091     if (p->error_indicator) {
26092         p->level--;
26093         return NULL;
26094     }
26095     void *_res = NULL;
26096     int _mark = p->mark;
26097     int _start_mark = p->mark;
26098     void **_children = PyMem_Malloc(sizeof(void *));
26099     if (!_children) {
26100         p->error_indicator = 1;
26101         PyErr_NoMemory();
26102         p->level--;
26103         return NULL;
26104     }
26105     Py_ssize_t _children_capacity = 1;
26106     Py_ssize_t _n = 0;
26107     { // param_no_default
26108         if (p->error_indicator) {
26109             p->level--;
26110             return NULL;
26111         }
26112         D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26113         arg_ty param_no_default_var;
26114         while (
26115             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26116         )
26117         {
26118             _res = param_no_default_var;
26119             if (_n == _children_capacity) {
26120                 _children_capacity *= 2;
26121                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26122                 if (!_new_children) {
26123                     p->error_indicator = 1;
26124                     PyErr_NoMemory();
26125                     p->level--;
26126                     return NULL;
26127                 }
26128                 _children = _new_children;
26129             }
26130             _children[_n++] = _res;
26131             _mark = p->mark;
26132         }
26133         p->mark = _mark;
26134         D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
26135                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26136     }
26137     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26138     if (!_seq) {
26139         PyMem_Free(_children);
26140         p->error_indicator = 1;
26141         PyErr_NoMemory();
26142         p->level--;
26143         return NULL;
26144     }
26145     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26146     PyMem_Free(_children);
26147     _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
26148     p->level--;
26149     return _seq;
26150 }
26151 
26152 // _loop0_71: param_with_default
26153 static asdl_seq *
_loop0_71_rule(Parser * p)26154 _loop0_71_rule(Parser *p)
26155 {
26156     if (p->level++ == MAXSTACK) {
26157         p->error_indicator = 1;
26158         PyErr_NoMemory();
26159     }
26160     if (p->error_indicator) {
26161         p->level--;
26162         return NULL;
26163     }
26164     void *_res = NULL;
26165     int _mark = p->mark;
26166     int _start_mark = p->mark;
26167     void **_children = PyMem_Malloc(sizeof(void *));
26168     if (!_children) {
26169         p->error_indicator = 1;
26170         PyErr_NoMemory();
26171         p->level--;
26172         return NULL;
26173     }
26174     Py_ssize_t _children_capacity = 1;
26175     Py_ssize_t _n = 0;
26176     { // param_with_default
26177         if (p->error_indicator) {
26178             p->level--;
26179             return NULL;
26180         }
26181         D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
26182         NameDefaultPair* param_with_default_var;
26183         while (
26184             (param_with_default_var = param_with_default_rule(p))  // param_with_default
26185         )
26186         {
26187             _res = param_with_default_var;
26188             if (_n == _children_capacity) {
26189                 _children_capacity *= 2;
26190                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26191                 if (!_new_children) {
26192                     p->error_indicator = 1;
26193                     PyErr_NoMemory();
26194                     p->level--;
26195                     return NULL;
26196                 }
26197                 _children = _new_children;
26198             }
26199             _children[_n++] = _res;
26200             _mark = p->mark;
26201         }
26202         p->mark = _mark;
26203         D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
26204                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26205     }
26206     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26207     if (!_seq) {
26208         PyMem_Free(_children);
26209         p->error_indicator = 1;
26210         PyErr_NoMemory();
26211         p->level--;
26212         return NULL;
26213     }
26214     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26215     PyMem_Free(_children);
26216     _PyPegen_insert_memo(p, _start_mark, _loop0_71_type, _seq);
26217     p->level--;
26218     return _seq;
26219 }
26220 
26221 // _loop0_72: param_with_default
26222 static asdl_seq *
_loop0_72_rule(Parser * p)26223 _loop0_72_rule(Parser *p)
26224 {
26225     if (p->level++ == MAXSTACK) {
26226         p->error_indicator = 1;
26227         PyErr_NoMemory();
26228     }
26229     if (p->error_indicator) {
26230         p->level--;
26231         return NULL;
26232     }
26233     void *_res = NULL;
26234     int _mark = p->mark;
26235     int _start_mark = p->mark;
26236     void **_children = PyMem_Malloc(sizeof(void *));
26237     if (!_children) {
26238         p->error_indicator = 1;
26239         PyErr_NoMemory();
26240         p->level--;
26241         return NULL;
26242     }
26243     Py_ssize_t _children_capacity = 1;
26244     Py_ssize_t _n = 0;
26245     { // param_with_default
26246         if (p->error_indicator) {
26247             p->level--;
26248             return NULL;
26249         }
26250         D(fprintf(stderr, "%*c> _loop0_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
26251         NameDefaultPair* param_with_default_var;
26252         while (
26253             (param_with_default_var = param_with_default_rule(p))  // param_with_default
26254         )
26255         {
26256             _res = param_with_default_var;
26257             if (_n == _children_capacity) {
26258                 _children_capacity *= 2;
26259                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26260                 if (!_new_children) {
26261                     p->error_indicator = 1;
26262                     PyErr_NoMemory();
26263                     p->level--;
26264                     return NULL;
26265                 }
26266                 _children = _new_children;
26267             }
26268             _children[_n++] = _res;
26269             _mark = p->mark;
26270         }
26271         p->mark = _mark;
26272         D(fprintf(stderr, "%*c%s _loop0_72[%d-%d]: %s failed!\n", p->level, ' ',
26273                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26274     }
26275     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26276     if (!_seq) {
26277         PyMem_Free(_children);
26278         p->error_indicator = 1;
26279         PyErr_NoMemory();
26280         p->level--;
26281         return NULL;
26282     }
26283     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26284     PyMem_Free(_children);
26285     _PyPegen_insert_memo(p, _start_mark, _loop0_72_type, _seq);
26286     p->level--;
26287     return _seq;
26288 }
26289 
26290 // _loop1_73: param_no_default
26291 static asdl_seq *
_loop1_73_rule(Parser * p)26292 _loop1_73_rule(Parser *p)
26293 {
26294     if (p->level++ == MAXSTACK) {
26295         p->error_indicator = 1;
26296         PyErr_NoMemory();
26297     }
26298     if (p->error_indicator) {
26299         p->level--;
26300         return NULL;
26301     }
26302     void *_res = NULL;
26303     int _mark = p->mark;
26304     int _start_mark = p->mark;
26305     void **_children = PyMem_Malloc(sizeof(void *));
26306     if (!_children) {
26307         p->error_indicator = 1;
26308         PyErr_NoMemory();
26309         p->level--;
26310         return NULL;
26311     }
26312     Py_ssize_t _children_capacity = 1;
26313     Py_ssize_t _n = 0;
26314     { // param_no_default
26315         if (p->error_indicator) {
26316             p->level--;
26317             return NULL;
26318         }
26319         D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26320         arg_ty param_no_default_var;
26321         while (
26322             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26323         )
26324         {
26325             _res = param_no_default_var;
26326             if (_n == _children_capacity) {
26327                 _children_capacity *= 2;
26328                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26329                 if (!_new_children) {
26330                     p->error_indicator = 1;
26331                     PyErr_NoMemory();
26332                     p->level--;
26333                     return NULL;
26334                 }
26335                 _children = _new_children;
26336             }
26337             _children[_n++] = _res;
26338             _mark = p->mark;
26339         }
26340         p->mark = _mark;
26341         D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ',
26342                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26343     }
26344     if (_n == 0 || p->error_indicator) {
26345         PyMem_Free(_children);
26346         p->level--;
26347         return NULL;
26348     }
26349     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26350     if (!_seq) {
26351         PyMem_Free(_children);
26352         p->error_indicator = 1;
26353         PyErr_NoMemory();
26354         p->level--;
26355         return NULL;
26356     }
26357     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26358     PyMem_Free(_children);
26359     _PyPegen_insert_memo(p, _start_mark, _loop1_73_type, _seq);
26360     p->level--;
26361     return _seq;
26362 }
26363 
26364 // _loop0_74: param_with_default
26365 static asdl_seq *
_loop0_74_rule(Parser * p)26366 _loop0_74_rule(Parser *p)
26367 {
26368     if (p->level++ == MAXSTACK) {
26369         p->error_indicator = 1;
26370         PyErr_NoMemory();
26371     }
26372     if (p->error_indicator) {
26373         p->level--;
26374         return NULL;
26375     }
26376     void *_res = NULL;
26377     int _mark = p->mark;
26378     int _start_mark = p->mark;
26379     void **_children = PyMem_Malloc(sizeof(void *));
26380     if (!_children) {
26381         p->error_indicator = 1;
26382         PyErr_NoMemory();
26383         p->level--;
26384         return NULL;
26385     }
26386     Py_ssize_t _children_capacity = 1;
26387     Py_ssize_t _n = 0;
26388     { // param_with_default
26389         if (p->error_indicator) {
26390             p->level--;
26391             return NULL;
26392         }
26393         D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
26394         NameDefaultPair* param_with_default_var;
26395         while (
26396             (param_with_default_var = param_with_default_rule(p))  // param_with_default
26397         )
26398         {
26399             _res = param_with_default_var;
26400             if (_n == _children_capacity) {
26401                 _children_capacity *= 2;
26402                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26403                 if (!_new_children) {
26404                     p->error_indicator = 1;
26405                     PyErr_NoMemory();
26406                     p->level--;
26407                     return NULL;
26408                 }
26409                 _children = _new_children;
26410             }
26411             _children[_n++] = _res;
26412             _mark = p->mark;
26413         }
26414         p->mark = _mark;
26415         D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
26416                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26417     }
26418     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26419     if (!_seq) {
26420         PyMem_Free(_children);
26421         p->error_indicator = 1;
26422         PyErr_NoMemory();
26423         p->level--;
26424         return NULL;
26425     }
26426     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26427     PyMem_Free(_children);
26428     _PyPegen_insert_memo(p, _start_mark, _loop0_74_type, _seq);
26429     p->level--;
26430     return _seq;
26431 }
26432 
26433 // _loop1_75: param_with_default
26434 static asdl_seq *
_loop1_75_rule(Parser * p)26435 _loop1_75_rule(Parser *p)
26436 {
26437     if (p->level++ == MAXSTACK) {
26438         p->error_indicator = 1;
26439         PyErr_NoMemory();
26440     }
26441     if (p->error_indicator) {
26442         p->level--;
26443         return NULL;
26444     }
26445     void *_res = NULL;
26446     int _mark = p->mark;
26447     int _start_mark = p->mark;
26448     void **_children = PyMem_Malloc(sizeof(void *));
26449     if (!_children) {
26450         p->error_indicator = 1;
26451         PyErr_NoMemory();
26452         p->level--;
26453         return NULL;
26454     }
26455     Py_ssize_t _children_capacity = 1;
26456     Py_ssize_t _n = 0;
26457     { // param_with_default
26458         if (p->error_indicator) {
26459             p->level--;
26460             return NULL;
26461         }
26462         D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
26463         NameDefaultPair* param_with_default_var;
26464         while (
26465             (param_with_default_var = param_with_default_rule(p))  // param_with_default
26466         )
26467         {
26468             _res = param_with_default_var;
26469             if (_n == _children_capacity) {
26470                 _children_capacity *= 2;
26471                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26472                 if (!_new_children) {
26473                     p->error_indicator = 1;
26474                     PyErr_NoMemory();
26475                     p->level--;
26476                     return NULL;
26477                 }
26478                 _children = _new_children;
26479             }
26480             _children[_n++] = _res;
26481             _mark = p->mark;
26482         }
26483         p->mark = _mark;
26484         D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ',
26485                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26486     }
26487     if (_n == 0 || p->error_indicator) {
26488         PyMem_Free(_children);
26489         p->level--;
26490         return NULL;
26491     }
26492     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26493     if (!_seq) {
26494         PyMem_Free(_children);
26495         p->error_indicator = 1;
26496         PyErr_NoMemory();
26497         p->level--;
26498         return NULL;
26499     }
26500     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26501     PyMem_Free(_children);
26502     _PyPegen_insert_memo(p, _start_mark, _loop1_75_type, _seq);
26503     p->level--;
26504     return _seq;
26505 }
26506 
26507 // _loop1_76: param_no_default
26508 static asdl_seq *
_loop1_76_rule(Parser * p)26509 _loop1_76_rule(Parser *p)
26510 {
26511     if (p->level++ == MAXSTACK) {
26512         p->error_indicator = 1;
26513         PyErr_NoMemory();
26514     }
26515     if (p->error_indicator) {
26516         p->level--;
26517         return NULL;
26518     }
26519     void *_res = NULL;
26520     int _mark = p->mark;
26521     int _start_mark = p->mark;
26522     void **_children = PyMem_Malloc(sizeof(void *));
26523     if (!_children) {
26524         p->error_indicator = 1;
26525         PyErr_NoMemory();
26526         p->level--;
26527         return NULL;
26528     }
26529     Py_ssize_t _children_capacity = 1;
26530     Py_ssize_t _n = 0;
26531     { // param_no_default
26532         if (p->error_indicator) {
26533             p->level--;
26534             return NULL;
26535         }
26536         D(fprintf(stderr, "%*c> _loop1_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26537         arg_ty param_no_default_var;
26538         while (
26539             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26540         )
26541         {
26542             _res = param_no_default_var;
26543             if (_n == _children_capacity) {
26544                 _children_capacity *= 2;
26545                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26546                 if (!_new_children) {
26547                     p->error_indicator = 1;
26548                     PyErr_NoMemory();
26549                     p->level--;
26550                     return NULL;
26551                 }
26552                 _children = _new_children;
26553             }
26554             _children[_n++] = _res;
26555             _mark = p->mark;
26556         }
26557         p->mark = _mark;
26558         D(fprintf(stderr, "%*c%s _loop1_76[%d-%d]: %s failed!\n", p->level, ' ',
26559                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26560     }
26561     if (_n == 0 || p->error_indicator) {
26562         PyMem_Free(_children);
26563         p->level--;
26564         return NULL;
26565     }
26566     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26567     if (!_seq) {
26568         PyMem_Free(_children);
26569         p->error_indicator = 1;
26570         PyErr_NoMemory();
26571         p->level--;
26572         return NULL;
26573     }
26574     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26575     PyMem_Free(_children);
26576     _PyPegen_insert_memo(p, _start_mark, _loop1_76_type, _seq);
26577     p->level--;
26578     return _seq;
26579 }
26580 
26581 // _loop1_77: param_no_default
26582 static asdl_seq *
_loop1_77_rule(Parser * p)26583 _loop1_77_rule(Parser *p)
26584 {
26585     if (p->level++ == MAXSTACK) {
26586         p->error_indicator = 1;
26587         PyErr_NoMemory();
26588     }
26589     if (p->error_indicator) {
26590         p->level--;
26591         return NULL;
26592     }
26593     void *_res = NULL;
26594     int _mark = p->mark;
26595     int _start_mark = p->mark;
26596     void **_children = PyMem_Malloc(sizeof(void *));
26597     if (!_children) {
26598         p->error_indicator = 1;
26599         PyErr_NoMemory();
26600         p->level--;
26601         return NULL;
26602     }
26603     Py_ssize_t _children_capacity = 1;
26604     Py_ssize_t _n = 0;
26605     { // param_no_default
26606         if (p->error_indicator) {
26607             p->level--;
26608             return NULL;
26609         }
26610         D(fprintf(stderr, "%*c> _loop1_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26611         arg_ty param_no_default_var;
26612         while (
26613             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26614         )
26615         {
26616             _res = param_no_default_var;
26617             if (_n == _children_capacity) {
26618                 _children_capacity *= 2;
26619                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26620                 if (!_new_children) {
26621                     p->error_indicator = 1;
26622                     PyErr_NoMemory();
26623                     p->level--;
26624                     return NULL;
26625                 }
26626                 _children = _new_children;
26627             }
26628             _children[_n++] = _res;
26629             _mark = p->mark;
26630         }
26631         p->mark = _mark;
26632         D(fprintf(stderr, "%*c%s _loop1_77[%d-%d]: %s failed!\n", p->level, ' ',
26633                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26634     }
26635     if (_n == 0 || p->error_indicator) {
26636         PyMem_Free(_children);
26637         p->level--;
26638         return NULL;
26639     }
26640     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26641     if (!_seq) {
26642         PyMem_Free(_children);
26643         p->error_indicator = 1;
26644         PyErr_NoMemory();
26645         p->level--;
26646         return NULL;
26647     }
26648     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26649     PyMem_Free(_children);
26650     _PyPegen_insert_memo(p, _start_mark, _loop1_77_type, _seq);
26651     p->level--;
26652     return _seq;
26653 }
26654 
26655 // _loop0_78: param_no_default
26656 static asdl_seq *
_loop0_78_rule(Parser * p)26657 _loop0_78_rule(Parser *p)
26658 {
26659     if (p->level++ == MAXSTACK) {
26660         p->error_indicator = 1;
26661         PyErr_NoMemory();
26662     }
26663     if (p->error_indicator) {
26664         p->level--;
26665         return NULL;
26666     }
26667     void *_res = NULL;
26668     int _mark = p->mark;
26669     int _start_mark = p->mark;
26670     void **_children = PyMem_Malloc(sizeof(void *));
26671     if (!_children) {
26672         p->error_indicator = 1;
26673         PyErr_NoMemory();
26674         p->level--;
26675         return NULL;
26676     }
26677     Py_ssize_t _children_capacity = 1;
26678     Py_ssize_t _n = 0;
26679     { // param_no_default
26680         if (p->error_indicator) {
26681             p->level--;
26682             return NULL;
26683         }
26684         D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26685         arg_ty param_no_default_var;
26686         while (
26687             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26688         )
26689         {
26690             _res = param_no_default_var;
26691             if (_n == _children_capacity) {
26692                 _children_capacity *= 2;
26693                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26694                 if (!_new_children) {
26695                     p->error_indicator = 1;
26696                     PyErr_NoMemory();
26697                     p->level--;
26698                     return NULL;
26699                 }
26700                 _children = _new_children;
26701             }
26702             _children[_n++] = _res;
26703             _mark = p->mark;
26704         }
26705         p->mark = _mark;
26706         D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ',
26707                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26708     }
26709     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26710     if (!_seq) {
26711         PyMem_Free(_children);
26712         p->error_indicator = 1;
26713         PyErr_NoMemory();
26714         p->level--;
26715         return NULL;
26716     }
26717     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26718     PyMem_Free(_children);
26719     _PyPegen_insert_memo(p, _start_mark, _loop0_78_type, _seq);
26720     p->level--;
26721     return _seq;
26722 }
26723 
26724 // _loop1_79: param_with_default
26725 static asdl_seq *
_loop1_79_rule(Parser * p)26726 _loop1_79_rule(Parser *p)
26727 {
26728     if (p->level++ == MAXSTACK) {
26729         p->error_indicator = 1;
26730         PyErr_NoMemory();
26731     }
26732     if (p->error_indicator) {
26733         p->level--;
26734         return NULL;
26735     }
26736     void *_res = NULL;
26737     int _mark = p->mark;
26738     int _start_mark = p->mark;
26739     void **_children = PyMem_Malloc(sizeof(void *));
26740     if (!_children) {
26741         p->error_indicator = 1;
26742         PyErr_NoMemory();
26743         p->level--;
26744         return NULL;
26745     }
26746     Py_ssize_t _children_capacity = 1;
26747     Py_ssize_t _n = 0;
26748     { // param_with_default
26749         if (p->error_indicator) {
26750             p->level--;
26751             return NULL;
26752         }
26753         D(fprintf(stderr, "%*c> _loop1_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
26754         NameDefaultPair* param_with_default_var;
26755         while (
26756             (param_with_default_var = param_with_default_rule(p))  // param_with_default
26757         )
26758         {
26759             _res = param_with_default_var;
26760             if (_n == _children_capacity) {
26761                 _children_capacity *= 2;
26762                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26763                 if (!_new_children) {
26764                     p->error_indicator = 1;
26765                     PyErr_NoMemory();
26766                     p->level--;
26767                     return NULL;
26768                 }
26769                 _children = _new_children;
26770             }
26771             _children[_n++] = _res;
26772             _mark = p->mark;
26773         }
26774         p->mark = _mark;
26775         D(fprintf(stderr, "%*c%s _loop1_79[%d-%d]: %s failed!\n", p->level, ' ',
26776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26777     }
26778     if (_n == 0 || p->error_indicator) {
26779         PyMem_Free(_children);
26780         p->level--;
26781         return NULL;
26782     }
26783     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26784     if (!_seq) {
26785         PyMem_Free(_children);
26786         p->error_indicator = 1;
26787         PyErr_NoMemory();
26788         p->level--;
26789         return NULL;
26790     }
26791     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26792     PyMem_Free(_children);
26793     _PyPegen_insert_memo(p, _start_mark, _loop1_79_type, _seq);
26794     p->level--;
26795     return _seq;
26796 }
26797 
26798 // _loop0_80: param_no_default
26799 static asdl_seq *
_loop0_80_rule(Parser * p)26800 _loop0_80_rule(Parser *p)
26801 {
26802     if (p->level++ == MAXSTACK) {
26803         p->error_indicator = 1;
26804         PyErr_NoMemory();
26805     }
26806     if (p->error_indicator) {
26807         p->level--;
26808         return NULL;
26809     }
26810     void *_res = NULL;
26811     int _mark = p->mark;
26812     int _start_mark = p->mark;
26813     void **_children = PyMem_Malloc(sizeof(void *));
26814     if (!_children) {
26815         p->error_indicator = 1;
26816         PyErr_NoMemory();
26817         p->level--;
26818         return NULL;
26819     }
26820     Py_ssize_t _children_capacity = 1;
26821     Py_ssize_t _n = 0;
26822     { // param_no_default
26823         if (p->error_indicator) {
26824             p->level--;
26825             return NULL;
26826         }
26827         D(fprintf(stderr, "%*c> _loop0_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26828         arg_ty param_no_default_var;
26829         while (
26830             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26831         )
26832         {
26833             _res = param_no_default_var;
26834             if (_n == _children_capacity) {
26835                 _children_capacity *= 2;
26836                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26837                 if (!_new_children) {
26838                     p->error_indicator = 1;
26839                     PyErr_NoMemory();
26840                     p->level--;
26841                     return NULL;
26842                 }
26843                 _children = _new_children;
26844             }
26845             _children[_n++] = _res;
26846             _mark = p->mark;
26847         }
26848         p->mark = _mark;
26849         D(fprintf(stderr, "%*c%s _loop0_80[%d-%d]: %s failed!\n", p->level, ' ',
26850                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26851     }
26852     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26853     if (!_seq) {
26854         PyMem_Free(_children);
26855         p->error_indicator = 1;
26856         PyErr_NoMemory();
26857         p->level--;
26858         return NULL;
26859     }
26860     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26861     PyMem_Free(_children);
26862     _PyPegen_insert_memo(p, _start_mark, _loop0_80_type, _seq);
26863     p->level--;
26864     return _seq;
26865 }
26866 
26867 // _loop1_81: param_with_default
26868 static asdl_seq *
_loop1_81_rule(Parser * p)26869 _loop1_81_rule(Parser *p)
26870 {
26871     if (p->level++ == MAXSTACK) {
26872         p->error_indicator = 1;
26873         PyErr_NoMemory();
26874     }
26875     if (p->error_indicator) {
26876         p->level--;
26877         return NULL;
26878     }
26879     void *_res = NULL;
26880     int _mark = p->mark;
26881     int _start_mark = p->mark;
26882     void **_children = PyMem_Malloc(sizeof(void *));
26883     if (!_children) {
26884         p->error_indicator = 1;
26885         PyErr_NoMemory();
26886         p->level--;
26887         return NULL;
26888     }
26889     Py_ssize_t _children_capacity = 1;
26890     Py_ssize_t _n = 0;
26891     { // param_with_default
26892         if (p->error_indicator) {
26893             p->level--;
26894             return NULL;
26895         }
26896         D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
26897         NameDefaultPair* param_with_default_var;
26898         while (
26899             (param_with_default_var = param_with_default_rule(p))  // param_with_default
26900         )
26901         {
26902             _res = param_with_default_var;
26903             if (_n == _children_capacity) {
26904                 _children_capacity *= 2;
26905                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26906                 if (!_new_children) {
26907                     p->error_indicator = 1;
26908                     PyErr_NoMemory();
26909                     p->level--;
26910                     return NULL;
26911                 }
26912                 _children = _new_children;
26913             }
26914             _children[_n++] = _res;
26915             _mark = p->mark;
26916         }
26917         p->mark = _mark;
26918         D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
26919                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26920     }
26921     if (_n == 0 || p->error_indicator) {
26922         PyMem_Free(_children);
26923         p->level--;
26924         return NULL;
26925     }
26926     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26927     if (!_seq) {
26928         PyMem_Free(_children);
26929         p->error_indicator = 1;
26930         PyErr_NoMemory();
26931         p->level--;
26932         return NULL;
26933     }
26934     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26935     PyMem_Free(_children);
26936     _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
26937     p->level--;
26938     return _seq;
26939 }
26940 
26941 // _loop0_82: param_maybe_default
26942 static asdl_seq *
_loop0_82_rule(Parser * p)26943 _loop0_82_rule(Parser *p)
26944 {
26945     if (p->level++ == MAXSTACK) {
26946         p->error_indicator = 1;
26947         PyErr_NoMemory();
26948     }
26949     if (p->error_indicator) {
26950         p->level--;
26951         return NULL;
26952     }
26953     void *_res = NULL;
26954     int _mark = p->mark;
26955     int _start_mark = p->mark;
26956     void **_children = PyMem_Malloc(sizeof(void *));
26957     if (!_children) {
26958         p->error_indicator = 1;
26959         PyErr_NoMemory();
26960         p->level--;
26961         return NULL;
26962     }
26963     Py_ssize_t _children_capacity = 1;
26964     Py_ssize_t _n = 0;
26965     { // param_maybe_default
26966         if (p->error_indicator) {
26967             p->level--;
26968             return NULL;
26969         }
26970         D(fprintf(stderr, "%*c> _loop0_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
26971         NameDefaultPair* param_maybe_default_var;
26972         while (
26973             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
26974         )
26975         {
26976             _res = param_maybe_default_var;
26977             if (_n == _children_capacity) {
26978                 _children_capacity *= 2;
26979                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26980                 if (!_new_children) {
26981                     p->error_indicator = 1;
26982                     PyErr_NoMemory();
26983                     p->level--;
26984                     return NULL;
26985                 }
26986                 _children = _new_children;
26987             }
26988             _children[_n++] = _res;
26989             _mark = p->mark;
26990         }
26991         p->mark = _mark;
26992         D(fprintf(stderr, "%*c%s _loop0_82[%d-%d]: %s failed!\n", p->level, ' ',
26993                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
26994     }
26995     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26996     if (!_seq) {
26997         PyMem_Free(_children);
26998         p->error_indicator = 1;
26999         PyErr_NoMemory();
27000         p->level--;
27001         return NULL;
27002     }
27003     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27004     PyMem_Free(_children);
27005     _PyPegen_insert_memo(p, _start_mark, _loop0_82_type, _seq);
27006     p->level--;
27007     return _seq;
27008 }
27009 
27010 // _loop1_83: param_maybe_default
27011 static asdl_seq *
_loop1_83_rule(Parser * p)27012 _loop1_83_rule(Parser *p)
27013 {
27014     if (p->level++ == MAXSTACK) {
27015         p->error_indicator = 1;
27016         PyErr_NoMemory();
27017     }
27018     if (p->error_indicator) {
27019         p->level--;
27020         return NULL;
27021     }
27022     void *_res = NULL;
27023     int _mark = p->mark;
27024     int _start_mark = p->mark;
27025     void **_children = PyMem_Malloc(sizeof(void *));
27026     if (!_children) {
27027         p->error_indicator = 1;
27028         PyErr_NoMemory();
27029         p->level--;
27030         return NULL;
27031     }
27032     Py_ssize_t _children_capacity = 1;
27033     Py_ssize_t _n = 0;
27034     { // param_maybe_default
27035         if (p->error_indicator) {
27036             p->level--;
27037             return NULL;
27038         }
27039         D(fprintf(stderr, "%*c> _loop1_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
27040         NameDefaultPair* param_maybe_default_var;
27041         while (
27042             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
27043         )
27044         {
27045             _res = param_maybe_default_var;
27046             if (_n == _children_capacity) {
27047                 _children_capacity *= 2;
27048                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27049                 if (!_new_children) {
27050                     p->error_indicator = 1;
27051                     PyErr_NoMemory();
27052                     p->level--;
27053                     return NULL;
27054                 }
27055                 _children = _new_children;
27056             }
27057             _children[_n++] = _res;
27058             _mark = p->mark;
27059         }
27060         p->mark = _mark;
27061         D(fprintf(stderr, "%*c%s _loop1_83[%d-%d]: %s failed!\n", p->level, ' ',
27062                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
27063     }
27064     if (_n == 0 || p->error_indicator) {
27065         PyMem_Free(_children);
27066         p->level--;
27067         return NULL;
27068     }
27069     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27070     if (!_seq) {
27071         PyMem_Free(_children);
27072         p->error_indicator = 1;
27073         PyErr_NoMemory();
27074         p->level--;
27075         return NULL;
27076     }
27077     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27078     PyMem_Free(_children);
27079     _PyPegen_insert_memo(p, _start_mark, _loop1_83_type, _seq);
27080     p->level--;
27081     return _seq;
27082 }
27083 
27084 // _loop1_84: ('@' named_expression NEWLINE)
27085 static asdl_seq *
_loop1_84_rule(Parser * p)27086 _loop1_84_rule(Parser *p)
27087 {
27088     if (p->level++ == MAXSTACK) {
27089         p->error_indicator = 1;
27090         PyErr_NoMemory();
27091     }
27092     if (p->error_indicator) {
27093         p->level--;
27094         return NULL;
27095     }
27096     void *_res = NULL;
27097     int _mark = p->mark;
27098     int _start_mark = p->mark;
27099     void **_children = PyMem_Malloc(sizeof(void *));
27100     if (!_children) {
27101         p->error_indicator = 1;
27102         PyErr_NoMemory();
27103         p->level--;
27104         return NULL;
27105     }
27106     Py_ssize_t _children_capacity = 1;
27107     Py_ssize_t _n = 0;
27108     { // ('@' named_expression NEWLINE)
27109         if (p->error_indicator) {
27110             p->level--;
27111             return NULL;
27112         }
27113         D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
27114         void *_tmp_184_var;
27115         while (
27116             (_tmp_184_var = _tmp_184_rule(p))  // '@' named_expression NEWLINE
27117         )
27118         {
27119             _res = _tmp_184_var;
27120             if (_n == _children_capacity) {
27121                 _children_capacity *= 2;
27122                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27123                 if (!_new_children) {
27124                     p->error_indicator = 1;
27125                     PyErr_NoMemory();
27126                     p->level--;
27127                     return NULL;
27128                 }
27129                 _children = _new_children;
27130             }
27131             _children[_n++] = _res;
27132             _mark = p->mark;
27133         }
27134         p->mark = _mark;
27135         D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ',
27136                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
27137     }
27138     if (_n == 0 || p->error_indicator) {
27139         PyMem_Free(_children);
27140         p->level--;
27141         return NULL;
27142     }
27143     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27144     if (!_seq) {
27145         PyMem_Free(_children);
27146         p->error_indicator = 1;
27147         PyErr_NoMemory();
27148         p->level--;
27149         return NULL;
27150     }
27151     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27152     PyMem_Free(_children);
27153     _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
27154     p->level--;
27155     return _seq;
27156 }
27157 
27158 // _tmp_85: '(' arguments? ')'
27159 static void *
_tmp_85_rule(Parser * p)27160 _tmp_85_rule(Parser *p)
27161 {
27162     if (p->level++ == MAXSTACK) {
27163         p->error_indicator = 1;
27164         PyErr_NoMemory();
27165     }
27166     if (p->error_indicator) {
27167         p->level--;
27168         return NULL;
27169     }
27170     void * _res = NULL;
27171     int _mark = p->mark;
27172     { // '(' arguments? ')'
27173         if (p->error_indicator) {
27174             p->level--;
27175             return NULL;
27176         }
27177         D(fprintf(stderr, "%*c> _tmp_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
27178         Token * _literal;
27179         Token * _literal_1;
27180         void *z;
27181         if (
27182             (_literal = _PyPegen_expect_token(p, 7))  // token='('
27183             &&
27184             (z = arguments_rule(p), !p->error_indicator)  // arguments?
27185             &&
27186             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
27187         )
27188         {
27189             D(fprintf(stderr, "%*c+ _tmp_85[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
27190             _res = z;
27191             if (_res == NULL && PyErr_Occurred()) {
27192                 p->error_indicator = 1;
27193                 p->level--;
27194                 return NULL;
27195             }
27196             goto done;
27197         }
27198         p->mark = _mark;
27199         D(fprintf(stderr, "%*c%s _tmp_85[%d-%d]: %s failed!\n", p->level, ' ',
27200                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
27201     }
27202     _res = NULL;
27203   done:
27204     p->level--;
27205     return _res;
27206 }
27207 
27208 // _loop1_86: (',' star_expression)
27209 static asdl_seq *
_loop1_86_rule(Parser * p)27210 _loop1_86_rule(Parser *p)
27211 {
27212     if (p->level++ == MAXSTACK) {
27213         p->error_indicator = 1;
27214         PyErr_NoMemory();
27215     }
27216     if (p->error_indicator) {
27217         p->level--;
27218         return NULL;
27219     }
27220     void *_res = NULL;
27221     int _mark = p->mark;
27222     int _start_mark = p->mark;
27223     void **_children = PyMem_Malloc(sizeof(void *));
27224     if (!_children) {
27225         p->error_indicator = 1;
27226         PyErr_NoMemory();
27227         p->level--;
27228         return NULL;
27229     }
27230     Py_ssize_t _children_capacity = 1;
27231     Py_ssize_t _n = 0;
27232     { // (',' star_expression)
27233         if (p->error_indicator) {
27234             p->level--;
27235             return NULL;
27236         }
27237         D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
27238         void *_tmp_185_var;
27239         while (
27240             (_tmp_185_var = _tmp_185_rule(p))  // ',' star_expression
27241         )
27242         {
27243             _res = _tmp_185_var;
27244             if (_n == _children_capacity) {
27245                 _children_capacity *= 2;
27246                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27247                 if (!_new_children) {
27248                     p->error_indicator = 1;
27249                     PyErr_NoMemory();
27250                     p->level--;
27251                     return NULL;
27252                 }
27253                 _children = _new_children;
27254             }
27255             _children[_n++] = _res;
27256             _mark = p->mark;
27257         }
27258         p->mark = _mark;
27259         D(fprintf(stderr, "%*c%s _loop1_86[%d-%d]: %s failed!\n", p->level, ' ',
27260                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
27261     }
27262     if (_n == 0 || p->error_indicator) {
27263         PyMem_Free(_children);
27264         p->level--;
27265         return NULL;
27266     }
27267     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27268     if (!_seq) {
27269         PyMem_Free(_children);
27270         p->error_indicator = 1;
27271         PyErr_NoMemory();
27272         p->level--;
27273         return NULL;
27274     }
27275     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27276     PyMem_Free(_children);
27277     _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
27278     p->level--;
27279     return _seq;
27280 }
27281 
27282 // _loop0_88: ',' star_named_expression
27283 static asdl_seq *
_loop0_88_rule(Parser * p)27284 _loop0_88_rule(Parser *p)
27285 {
27286     if (p->level++ == MAXSTACK) {
27287         p->error_indicator = 1;
27288         PyErr_NoMemory();
27289     }
27290     if (p->error_indicator) {
27291         p->level--;
27292         return NULL;
27293     }
27294     void *_res = NULL;
27295     int _mark = p->mark;
27296     int _start_mark = p->mark;
27297     void **_children = PyMem_Malloc(sizeof(void *));
27298     if (!_children) {
27299         p->error_indicator = 1;
27300         PyErr_NoMemory();
27301         p->level--;
27302         return NULL;
27303     }
27304     Py_ssize_t _children_capacity = 1;
27305     Py_ssize_t _n = 0;
27306     { // ',' star_named_expression
27307         if (p->error_indicator) {
27308             p->level--;
27309             return NULL;
27310         }
27311         D(fprintf(stderr, "%*c> _loop0_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
27312         Token * _literal;
27313         expr_ty elem;
27314         while (
27315             (_literal = _PyPegen_expect_token(p, 12))  // token=','
27316             &&
27317             (elem = star_named_expression_rule(p))  // star_named_expression
27318         )
27319         {
27320             _res = elem;
27321             if (_res == NULL && PyErr_Occurred()) {
27322                 p->error_indicator = 1;
27323                 PyMem_Free(_children);
27324                 p->level--;
27325                 return NULL;
27326             }
27327             if (_n == _children_capacity) {
27328                 _children_capacity *= 2;
27329                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27330                 if (!_new_children) {
27331                     p->error_indicator = 1;
27332                     PyErr_NoMemory();
27333                     p->level--;
27334                     return NULL;
27335                 }
27336                 _children = _new_children;
27337             }
27338             _children[_n++] = _res;
27339             _mark = p->mark;
27340         }
27341         p->mark = _mark;
27342         D(fprintf(stderr, "%*c%s _loop0_88[%d-%d]: %s failed!\n", p->level, ' ',
27343                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
27344     }
27345     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27346     if (!_seq) {
27347         PyMem_Free(_children);
27348         p->error_indicator = 1;
27349         PyErr_NoMemory();
27350         p->level--;
27351         return NULL;
27352     }
27353     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27354     PyMem_Free(_children);
27355     _PyPegen_insert_memo(p, _start_mark, _loop0_88_type, _seq);
27356     p->level--;
27357     return _seq;
27358 }
27359 
27360 // _gather_87: star_named_expression _loop0_88
27361 static asdl_seq *
_gather_87_rule(Parser * p)27362 _gather_87_rule(Parser *p)
27363 {
27364     if (p->level++ == MAXSTACK) {
27365         p->error_indicator = 1;
27366         PyErr_NoMemory();
27367     }
27368     if (p->error_indicator) {
27369         p->level--;
27370         return NULL;
27371     }
27372     asdl_seq * _res = NULL;
27373     int _mark = p->mark;
27374     { // star_named_expression _loop0_88
27375         if (p->error_indicator) {
27376             p->level--;
27377             return NULL;
27378         }
27379         D(fprintf(stderr, "%*c> _gather_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_88"));
27380         expr_ty elem;
27381         asdl_seq * seq;
27382         if (
27383             (elem = star_named_expression_rule(p))  // star_named_expression
27384             &&
27385             (seq = _loop0_88_rule(p))  // _loop0_88
27386         )
27387         {
27388             D(fprintf(stderr, "%*c+ _gather_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_88"));
27389             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27390             goto done;
27391         }
27392         p->mark = _mark;
27393         D(fprintf(stderr, "%*c%s _gather_87[%d-%d]: %s failed!\n", p->level, ' ',
27394                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_88"));
27395     }
27396     _res = NULL;
27397   done:
27398     p->level--;
27399     return _res;
27400 }
27401 
27402 // _loop1_89: (',' expression)
27403 static asdl_seq *
_loop1_89_rule(Parser * p)27404 _loop1_89_rule(Parser *p)
27405 {
27406     if (p->level++ == MAXSTACK) {
27407         p->error_indicator = 1;
27408         PyErr_NoMemory();
27409     }
27410     if (p->error_indicator) {
27411         p->level--;
27412         return NULL;
27413     }
27414     void *_res = NULL;
27415     int _mark = p->mark;
27416     int _start_mark = p->mark;
27417     void **_children = PyMem_Malloc(sizeof(void *));
27418     if (!_children) {
27419         p->error_indicator = 1;
27420         PyErr_NoMemory();
27421         p->level--;
27422         return NULL;
27423     }
27424     Py_ssize_t _children_capacity = 1;
27425     Py_ssize_t _n = 0;
27426     { // (',' expression)
27427         if (p->error_indicator) {
27428             p->level--;
27429             return NULL;
27430         }
27431         D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
27432         void *_tmp_186_var;
27433         while (
27434             (_tmp_186_var = _tmp_186_rule(p))  // ',' expression
27435         )
27436         {
27437             _res = _tmp_186_var;
27438             if (_n == _children_capacity) {
27439                 _children_capacity *= 2;
27440                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27441                 if (!_new_children) {
27442                     p->error_indicator = 1;
27443                     PyErr_NoMemory();
27444                     p->level--;
27445                     return NULL;
27446                 }
27447                 _children = _new_children;
27448             }
27449             _children[_n++] = _res;
27450             _mark = p->mark;
27451         }
27452         p->mark = _mark;
27453         D(fprintf(stderr, "%*c%s _loop1_89[%d-%d]: %s failed!\n", p->level, ' ',
27454                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
27455     }
27456     if (_n == 0 || p->error_indicator) {
27457         PyMem_Free(_children);
27458         p->level--;
27459         return NULL;
27460     }
27461     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27462     if (!_seq) {
27463         PyMem_Free(_children);
27464         p->error_indicator = 1;
27465         PyErr_NoMemory();
27466         p->level--;
27467         return NULL;
27468     }
27469     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27470     PyMem_Free(_children);
27471     _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
27472     p->level--;
27473     return _seq;
27474 }
27475 
27476 // _loop0_90: lambda_param_no_default
27477 static asdl_seq *
_loop0_90_rule(Parser * p)27478 _loop0_90_rule(Parser *p)
27479 {
27480     if (p->level++ == MAXSTACK) {
27481         p->error_indicator = 1;
27482         PyErr_NoMemory();
27483     }
27484     if (p->error_indicator) {
27485         p->level--;
27486         return NULL;
27487     }
27488     void *_res = NULL;
27489     int _mark = p->mark;
27490     int _start_mark = p->mark;
27491     void **_children = PyMem_Malloc(sizeof(void *));
27492     if (!_children) {
27493         p->error_indicator = 1;
27494         PyErr_NoMemory();
27495         p->level--;
27496         return NULL;
27497     }
27498     Py_ssize_t _children_capacity = 1;
27499     Py_ssize_t _n = 0;
27500     { // lambda_param_no_default
27501         if (p->error_indicator) {
27502             p->level--;
27503             return NULL;
27504         }
27505         D(fprintf(stderr, "%*c> _loop0_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27506         arg_ty lambda_param_no_default_var;
27507         while (
27508             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27509         )
27510         {
27511             _res = lambda_param_no_default_var;
27512             if (_n == _children_capacity) {
27513                 _children_capacity *= 2;
27514                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27515                 if (!_new_children) {
27516                     p->error_indicator = 1;
27517                     PyErr_NoMemory();
27518                     p->level--;
27519                     return NULL;
27520                 }
27521                 _children = _new_children;
27522             }
27523             _children[_n++] = _res;
27524             _mark = p->mark;
27525         }
27526         p->mark = _mark;
27527         D(fprintf(stderr, "%*c%s _loop0_90[%d-%d]: %s failed!\n", p->level, ' ',
27528                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27529     }
27530     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27531     if (!_seq) {
27532         PyMem_Free(_children);
27533         p->error_indicator = 1;
27534         PyErr_NoMemory();
27535         p->level--;
27536         return NULL;
27537     }
27538     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27539     PyMem_Free(_children);
27540     _PyPegen_insert_memo(p, _start_mark, _loop0_90_type, _seq);
27541     p->level--;
27542     return _seq;
27543 }
27544 
27545 // _loop0_91: lambda_param_with_default
27546 static asdl_seq *
_loop0_91_rule(Parser * p)27547 _loop0_91_rule(Parser *p)
27548 {
27549     if (p->level++ == MAXSTACK) {
27550         p->error_indicator = 1;
27551         PyErr_NoMemory();
27552     }
27553     if (p->error_indicator) {
27554         p->level--;
27555         return NULL;
27556     }
27557     void *_res = NULL;
27558     int _mark = p->mark;
27559     int _start_mark = p->mark;
27560     void **_children = PyMem_Malloc(sizeof(void *));
27561     if (!_children) {
27562         p->error_indicator = 1;
27563         PyErr_NoMemory();
27564         p->level--;
27565         return NULL;
27566     }
27567     Py_ssize_t _children_capacity = 1;
27568     Py_ssize_t _n = 0;
27569     { // lambda_param_with_default
27570         if (p->error_indicator) {
27571             p->level--;
27572             return NULL;
27573         }
27574         D(fprintf(stderr, "%*c> _loop0_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27575         NameDefaultPair* lambda_param_with_default_var;
27576         while (
27577             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27578         )
27579         {
27580             _res = lambda_param_with_default_var;
27581             if (_n == _children_capacity) {
27582                 _children_capacity *= 2;
27583                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27584                 if (!_new_children) {
27585                     p->error_indicator = 1;
27586                     PyErr_NoMemory();
27587                     p->level--;
27588                     return NULL;
27589                 }
27590                 _children = _new_children;
27591             }
27592             _children[_n++] = _res;
27593             _mark = p->mark;
27594         }
27595         p->mark = _mark;
27596         D(fprintf(stderr, "%*c%s _loop0_91[%d-%d]: %s failed!\n", p->level, ' ',
27597                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27598     }
27599     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27600     if (!_seq) {
27601         PyMem_Free(_children);
27602         p->error_indicator = 1;
27603         PyErr_NoMemory();
27604         p->level--;
27605         return NULL;
27606     }
27607     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27608     PyMem_Free(_children);
27609     _PyPegen_insert_memo(p, _start_mark, _loop0_91_type, _seq);
27610     p->level--;
27611     return _seq;
27612 }
27613 
27614 // _loop0_92: lambda_param_with_default
27615 static asdl_seq *
_loop0_92_rule(Parser * p)27616 _loop0_92_rule(Parser *p)
27617 {
27618     if (p->level++ == MAXSTACK) {
27619         p->error_indicator = 1;
27620         PyErr_NoMemory();
27621     }
27622     if (p->error_indicator) {
27623         p->level--;
27624         return NULL;
27625     }
27626     void *_res = NULL;
27627     int _mark = p->mark;
27628     int _start_mark = p->mark;
27629     void **_children = PyMem_Malloc(sizeof(void *));
27630     if (!_children) {
27631         p->error_indicator = 1;
27632         PyErr_NoMemory();
27633         p->level--;
27634         return NULL;
27635     }
27636     Py_ssize_t _children_capacity = 1;
27637     Py_ssize_t _n = 0;
27638     { // lambda_param_with_default
27639         if (p->error_indicator) {
27640             p->level--;
27641             return NULL;
27642         }
27643         D(fprintf(stderr, "%*c> _loop0_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27644         NameDefaultPair* lambda_param_with_default_var;
27645         while (
27646             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27647         )
27648         {
27649             _res = lambda_param_with_default_var;
27650             if (_n == _children_capacity) {
27651                 _children_capacity *= 2;
27652                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27653                 if (!_new_children) {
27654                     p->error_indicator = 1;
27655                     PyErr_NoMemory();
27656                     p->level--;
27657                     return NULL;
27658                 }
27659                 _children = _new_children;
27660             }
27661             _children[_n++] = _res;
27662             _mark = p->mark;
27663         }
27664         p->mark = _mark;
27665         D(fprintf(stderr, "%*c%s _loop0_92[%d-%d]: %s failed!\n", p->level, ' ',
27666                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27667     }
27668     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27669     if (!_seq) {
27670         PyMem_Free(_children);
27671         p->error_indicator = 1;
27672         PyErr_NoMemory();
27673         p->level--;
27674         return NULL;
27675     }
27676     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27677     PyMem_Free(_children);
27678     _PyPegen_insert_memo(p, _start_mark, _loop0_92_type, _seq);
27679     p->level--;
27680     return _seq;
27681 }
27682 
27683 // _loop1_93: lambda_param_no_default
27684 static asdl_seq *
_loop1_93_rule(Parser * p)27685 _loop1_93_rule(Parser *p)
27686 {
27687     if (p->level++ == MAXSTACK) {
27688         p->error_indicator = 1;
27689         PyErr_NoMemory();
27690     }
27691     if (p->error_indicator) {
27692         p->level--;
27693         return NULL;
27694     }
27695     void *_res = NULL;
27696     int _mark = p->mark;
27697     int _start_mark = p->mark;
27698     void **_children = PyMem_Malloc(sizeof(void *));
27699     if (!_children) {
27700         p->error_indicator = 1;
27701         PyErr_NoMemory();
27702         p->level--;
27703         return NULL;
27704     }
27705     Py_ssize_t _children_capacity = 1;
27706     Py_ssize_t _n = 0;
27707     { // lambda_param_no_default
27708         if (p->error_indicator) {
27709             p->level--;
27710             return NULL;
27711         }
27712         D(fprintf(stderr, "%*c> _loop1_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27713         arg_ty lambda_param_no_default_var;
27714         while (
27715             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27716         )
27717         {
27718             _res = lambda_param_no_default_var;
27719             if (_n == _children_capacity) {
27720                 _children_capacity *= 2;
27721                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27722                 if (!_new_children) {
27723                     p->error_indicator = 1;
27724                     PyErr_NoMemory();
27725                     p->level--;
27726                     return NULL;
27727                 }
27728                 _children = _new_children;
27729             }
27730             _children[_n++] = _res;
27731             _mark = p->mark;
27732         }
27733         p->mark = _mark;
27734         D(fprintf(stderr, "%*c%s _loop1_93[%d-%d]: %s failed!\n", p->level, ' ',
27735                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27736     }
27737     if (_n == 0 || p->error_indicator) {
27738         PyMem_Free(_children);
27739         p->level--;
27740         return NULL;
27741     }
27742     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27743     if (!_seq) {
27744         PyMem_Free(_children);
27745         p->error_indicator = 1;
27746         PyErr_NoMemory();
27747         p->level--;
27748         return NULL;
27749     }
27750     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27751     PyMem_Free(_children);
27752     _PyPegen_insert_memo(p, _start_mark, _loop1_93_type, _seq);
27753     p->level--;
27754     return _seq;
27755 }
27756 
27757 // _loop0_94: lambda_param_with_default
27758 static asdl_seq *
_loop0_94_rule(Parser * p)27759 _loop0_94_rule(Parser *p)
27760 {
27761     if (p->level++ == MAXSTACK) {
27762         p->error_indicator = 1;
27763         PyErr_NoMemory();
27764     }
27765     if (p->error_indicator) {
27766         p->level--;
27767         return NULL;
27768     }
27769     void *_res = NULL;
27770     int _mark = p->mark;
27771     int _start_mark = p->mark;
27772     void **_children = PyMem_Malloc(sizeof(void *));
27773     if (!_children) {
27774         p->error_indicator = 1;
27775         PyErr_NoMemory();
27776         p->level--;
27777         return NULL;
27778     }
27779     Py_ssize_t _children_capacity = 1;
27780     Py_ssize_t _n = 0;
27781     { // lambda_param_with_default
27782         if (p->error_indicator) {
27783             p->level--;
27784             return NULL;
27785         }
27786         D(fprintf(stderr, "%*c> _loop0_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27787         NameDefaultPair* lambda_param_with_default_var;
27788         while (
27789             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27790         )
27791         {
27792             _res = lambda_param_with_default_var;
27793             if (_n == _children_capacity) {
27794                 _children_capacity *= 2;
27795                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27796                 if (!_new_children) {
27797                     p->error_indicator = 1;
27798                     PyErr_NoMemory();
27799                     p->level--;
27800                     return NULL;
27801                 }
27802                 _children = _new_children;
27803             }
27804             _children[_n++] = _res;
27805             _mark = p->mark;
27806         }
27807         p->mark = _mark;
27808         D(fprintf(stderr, "%*c%s _loop0_94[%d-%d]: %s failed!\n", p->level, ' ',
27809                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27810     }
27811     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27812     if (!_seq) {
27813         PyMem_Free(_children);
27814         p->error_indicator = 1;
27815         PyErr_NoMemory();
27816         p->level--;
27817         return NULL;
27818     }
27819     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27820     PyMem_Free(_children);
27821     _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
27822     p->level--;
27823     return _seq;
27824 }
27825 
27826 // _loop1_95: lambda_param_with_default
27827 static asdl_seq *
_loop1_95_rule(Parser * p)27828 _loop1_95_rule(Parser *p)
27829 {
27830     if (p->level++ == MAXSTACK) {
27831         p->error_indicator = 1;
27832         PyErr_NoMemory();
27833     }
27834     if (p->error_indicator) {
27835         p->level--;
27836         return NULL;
27837     }
27838     void *_res = NULL;
27839     int _mark = p->mark;
27840     int _start_mark = p->mark;
27841     void **_children = PyMem_Malloc(sizeof(void *));
27842     if (!_children) {
27843         p->error_indicator = 1;
27844         PyErr_NoMemory();
27845         p->level--;
27846         return NULL;
27847     }
27848     Py_ssize_t _children_capacity = 1;
27849     Py_ssize_t _n = 0;
27850     { // lambda_param_with_default
27851         if (p->error_indicator) {
27852             p->level--;
27853             return NULL;
27854         }
27855         D(fprintf(stderr, "%*c> _loop1_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27856         NameDefaultPair* lambda_param_with_default_var;
27857         while (
27858             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27859         )
27860         {
27861             _res = lambda_param_with_default_var;
27862             if (_n == _children_capacity) {
27863                 _children_capacity *= 2;
27864                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27865                 if (!_new_children) {
27866                     p->error_indicator = 1;
27867                     PyErr_NoMemory();
27868                     p->level--;
27869                     return NULL;
27870                 }
27871                 _children = _new_children;
27872             }
27873             _children[_n++] = _res;
27874             _mark = p->mark;
27875         }
27876         p->mark = _mark;
27877         D(fprintf(stderr, "%*c%s _loop1_95[%d-%d]: %s failed!\n", p->level, ' ',
27878                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27879     }
27880     if (_n == 0 || p->error_indicator) {
27881         PyMem_Free(_children);
27882         p->level--;
27883         return NULL;
27884     }
27885     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27886     if (!_seq) {
27887         PyMem_Free(_children);
27888         p->error_indicator = 1;
27889         PyErr_NoMemory();
27890         p->level--;
27891         return NULL;
27892     }
27893     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27894     PyMem_Free(_children);
27895     _PyPegen_insert_memo(p, _start_mark, _loop1_95_type, _seq);
27896     p->level--;
27897     return _seq;
27898 }
27899 
27900 // _loop1_96: lambda_param_no_default
27901 static asdl_seq *
_loop1_96_rule(Parser * p)27902 _loop1_96_rule(Parser *p)
27903 {
27904     if (p->level++ == MAXSTACK) {
27905         p->error_indicator = 1;
27906         PyErr_NoMemory();
27907     }
27908     if (p->error_indicator) {
27909         p->level--;
27910         return NULL;
27911     }
27912     void *_res = NULL;
27913     int _mark = p->mark;
27914     int _start_mark = p->mark;
27915     void **_children = PyMem_Malloc(sizeof(void *));
27916     if (!_children) {
27917         p->error_indicator = 1;
27918         PyErr_NoMemory();
27919         p->level--;
27920         return NULL;
27921     }
27922     Py_ssize_t _children_capacity = 1;
27923     Py_ssize_t _n = 0;
27924     { // lambda_param_no_default
27925         if (p->error_indicator) {
27926             p->level--;
27927             return NULL;
27928         }
27929         D(fprintf(stderr, "%*c> _loop1_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27930         arg_ty lambda_param_no_default_var;
27931         while (
27932             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27933         )
27934         {
27935             _res = lambda_param_no_default_var;
27936             if (_n == _children_capacity) {
27937                 _children_capacity *= 2;
27938                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27939                 if (!_new_children) {
27940                     p->error_indicator = 1;
27941                     PyErr_NoMemory();
27942                     p->level--;
27943                     return NULL;
27944                 }
27945                 _children = _new_children;
27946             }
27947             _children[_n++] = _res;
27948             _mark = p->mark;
27949         }
27950         p->mark = _mark;
27951         D(fprintf(stderr, "%*c%s _loop1_96[%d-%d]: %s failed!\n", p->level, ' ',
27952                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27953     }
27954     if (_n == 0 || p->error_indicator) {
27955         PyMem_Free(_children);
27956         p->level--;
27957         return NULL;
27958     }
27959     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27960     if (!_seq) {
27961         PyMem_Free(_children);
27962         p->error_indicator = 1;
27963         PyErr_NoMemory();
27964         p->level--;
27965         return NULL;
27966     }
27967     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27968     PyMem_Free(_children);
27969     _PyPegen_insert_memo(p, _start_mark, _loop1_96_type, _seq);
27970     p->level--;
27971     return _seq;
27972 }
27973 
27974 // _loop1_97: lambda_param_no_default
27975 static asdl_seq *
_loop1_97_rule(Parser * p)27976 _loop1_97_rule(Parser *p)
27977 {
27978     if (p->level++ == MAXSTACK) {
27979         p->error_indicator = 1;
27980         PyErr_NoMemory();
27981     }
27982     if (p->error_indicator) {
27983         p->level--;
27984         return NULL;
27985     }
27986     void *_res = NULL;
27987     int _mark = p->mark;
27988     int _start_mark = p->mark;
27989     void **_children = PyMem_Malloc(sizeof(void *));
27990     if (!_children) {
27991         p->error_indicator = 1;
27992         PyErr_NoMemory();
27993         p->level--;
27994         return NULL;
27995     }
27996     Py_ssize_t _children_capacity = 1;
27997     Py_ssize_t _n = 0;
27998     { // lambda_param_no_default
27999         if (p->error_indicator) {
28000             p->level--;
28001             return NULL;
28002         }
28003         D(fprintf(stderr, "%*c> _loop1_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
28004         arg_ty lambda_param_no_default_var;
28005         while (
28006             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
28007         )
28008         {
28009             _res = lambda_param_no_default_var;
28010             if (_n == _children_capacity) {
28011                 _children_capacity *= 2;
28012                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28013                 if (!_new_children) {
28014                     p->error_indicator = 1;
28015                     PyErr_NoMemory();
28016                     p->level--;
28017                     return NULL;
28018                 }
28019                 _children = _new_children;
28020             }
28021             _children[_n++] = _res;
28022             _mark = p->mark;
28023         }
28024         p->mark = _mark;
28025         D(fprintf(stderr, "%*c%s _loop1_97[%d-%d]: %s failed!\n", p->level, ' ',
28026                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
28027     }
28028     if (_n == 0 || p->error_indicator) {
28029         PyMem_Free(_children);
28030         p->level--;
28031         return NULL;
28032     }
28033     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28034     if (!_seq) {
28035         PyMem_Free(_children);
28036         p->error_indicator = 1;
28037         PyErr_NoMemory();
28038         p->level--;
28039         return NULL;
28040     }
28041     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28042     PyMem_Free(_children);
28043     _PyPegen_insert_memo(p, _start_mark, _loop1_97_type, _seq);
28044     p->level--;
28045     return _seq;
28046 }
28047 
28048 // _loop0_98: lambda_param_no_default
28049 static asdl_seq *
_loop0_98_rule(Parser * p)28050 _loop0_98_rule(Parser *p)
28051 {
28052     if (p->level++ == MAXSTACK) {
28053         p->error_indicator = 1;
28054         PyErr_NoMemory();
28055     }
28056     if (p->error_indicator) {
28057         p->level--;
28058         return NULL;
28059     }
28060     void *_res = NULL;
28061     int _mark = p->mark;
28062     int _start_mark = p->mark;
28063     void **_children = PyMem_Malloc(sizeof(void *));
28064     if (!_children) {
28065         p->error_indicator = 1;
28066         PyErr_NoMemory();
28067         p->level--;
28068         return NULL;
28069     }
28070     Py_ssize_t _children_capacity = 1;
28071     Py_ssize_t _n = 0;
28072     { // lambda_param_no_default
28073         if (p->error_indicator) {
28074             p->level--;
28075             return NULL;
28076         }
28077         D(fprintf(stderr, "%*c> _loop0_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
28078         arg_ty lambda_param_no_default_var;
28079         while (
28080             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
28081         )
28082         {
28083             _res = lambda_param_no_default_var;
28084             if (_n == _children_capacity) {
28085                 _children_capacity *= 2;
28086                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28087                 if (!_new_children) {
28088                     p->error_indicator = 1;
28089                     PyErr_NoMemory();
28090                     p->level--;
28091                     return NULL;
28092                 }
28093                 _children = _new_children;
28094             }
28095             _children[_n++] = _res;
28096             _mark = p->mark;
28097         }
28098         p->mark = _mark;
28099         D(fprintf(stderr, "%*c%s _loop0_98[%d-%d]: %s failed!\n", p->level, ' ',
28100                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
28101     }
28102     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28103     if (!_seq) {
28104         PyMem_Free(_children);
28105         p->error_indicator = 1;
28106         PyErr_NoMemory();
28107         p->level--;
28108         return NULL;
28109     }
28110     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28111     PyMem_Free(_children);
28112     _PyPegen_insert_memo(p, _start_mark, _loop0_98_type, _seq);
28113     p->level--;
28114     return _seq;
28115 }
28116 
28117 // _loop1_99: lambda_param_with_default
28118 static asdl_seq *
_loop1_99_rule(Parser * p)28119 _loop1_99_rule(Parser *p)
28120 {
28121     if (p->level++ == MAXSTACK) {
28122         p->error_indicator = 1;
28123         PyErr_NoMemory();
28124     }
28125     if (p->error_indicator) {
28126         p->level--;
28127         return NULL;
28128     }
28129     void *_res = NULL;
28130     int _mark = p->mark;
28131     int _start_mark = p->mark;
28132     void **_children = PyMem_Malloc(sizeof(void *));
28133     if (!_children) {
28134         p->error_indicator = 1;
28135         PyErr_NoMemory();
28136         p->level--;
28137         return NULL;
28138     }
28139     Py_ssize_t _children_capacity = 1;
28140     Py_ssize_t _n = 0;
28141     { // lambda_param_with_default
28142         if (p->error_indicator) {
28143             p->level--;
28144             return NULL;
28145         }
28146         D(fprintf(stderr, "%*c> _loop1_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
28147         NameDefaultPair* lambda_param_with_default_var;
28148         while (
28149             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
28150         )
28151         {
28152             _res = lambda_param_with_default_var;
28153             if (_n == _children_capacity) {
28154                 _children_capacity *= 2;
28155                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28156                 if (!_new_children) {
28157                     p->error_indicator = 1;
28158                     PyErr_NoMemory();
28159                     p->level--;
28160                     return NULL;
28161                 }
28162                 _children = _new_children;
28163             }
28164             _children[_n++] = _res;
28165             _mark = p->mark;
28166         }
28167         p->mark = _mark;
28168         D(fprintf(stderr, "%*c%s _loop1_99[%d-%d]: %s failed!\n", p->level, ' ',
28169                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
28170     }
28171     if (_n == 0 || p->error_indicator) {
28172         PyMem_Free(_children);
28173         p->level--;
28174         return NULL;
28175     }
28176     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28177     if (!_seq) {
28178         PyMem_Free(_children);
28179         p->error_indicator = 1;
28180         PyErr_NoMemory();
28181         p->level--;
28182         return NULL;
28183     }
28184     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28185     PyMem_Free(_children);
28186     _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
28187     p->level--;
28188     return _seq;
28189 }
28190 
28191 // _loop0_100: lambda_param_no_default
28192 static asdl_seq *
_loop0_100_rule(Parser * p)28193 _loop0_100_rule(Parser *p)
28194 {
28195     if (p->level++ == MAXSTACK) {
28196         p->error_indicator = 1;
28197         PyErr_NoMemory();
28198     }
28199     if (p->error_indicator) {
28200         p->level--;
28201         return NULL;
28202     }
28203     void *_res = NULL;
28204     int _mark = p->mark;
28205     int _start_mark = p->mark;
28206     void **_children = PyMem_Malloc(sizeof(void *));
28207     if (!_children) {
28208         p->error_indicator = 1;
28209         PyErr_NoMemory();
28210         p->level--;
28211         return NULL;
28212     }
28213     Py_ssize_t _children_capacity = 1;
28214     Py_ssize_t _n = 0;
28215     { // lambda_param_no_default
28216         if (p->error_indicator) {
28217             p->level--;
28218             return NULL;
28219         }
28220         D(fprintf(stderr, "%*c> _loop0_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
28221         arg_ty lambda_param_no_default_var;
28222         while (
28223             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
28224         )
28225         {
28226             _res = lambda_param_no_default_var;
28227             if (_n == _children_capacity) {
28228                 _children_capacity *= 2;
28229                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28230                 if (!_new_children) {
28231                     p->error_indicator = 1;
28232                     PyErr_NoMemory();
28233                     p->level--;
28234                     return NULL;
28235                 }
28236                 _children = _new_children;
28237             }
28238             _children[_n++] = _res;
28239             _mark = p->mark;
28240         }
28241         p->mark = _mark;
28242         D(fprintf(stderr, "%*c%s _loop0_100[%d-%d]: %s failed!\n", p->level, ' ',
28243                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
28244     }
28245     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28246     if (!_seq) {
28247         PyMem_Free(_children);
28248         p->error_indicator = 1;
28249         PyErr_NoMemory();
28250         p->level--;
28251         return NULL;
28252     }
28253     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28254     PyMem_Free(_children);
28255     _PyPegen_insert_memo(p, _start_mark, _loop0_100_type, _seq);
28256     p->level--;
28257     return _seq;
28258 }
28259 
28260 // _loop1_101: lambda_param_with_default
28261 static asdl_seq *
_loop1_101_rule(Parser * p)28262 _loop1_101_rule(Parser *p)
28263 {
28264     if (p->level++ == MAXSTACK) {
28265         p->error_indicator = 1;
28266         PyErr_NoMemory();
28267     }
28268     if (p->error_indicator) {
28269         p->level--;
28270         return NULL;
28271     }
28272     void *_res = NULL;
28273     int _mark = p->mark;
28274     int _start_mark = p->mark;
28275     void **_children = PyMem_Malloc(sizeof(void *));
28276     if (!_children) {
28277         p->error_indicator = 1;
28278         PyErr_NoMemory();
28279         p->level--;
28280         return NULL;
28281     }
28282     Py_ssize_t _children_capacity = 1;
28283     Py_ssize_t _n = 0;
28284     { // lambda_param_with_default
28285         if (p->error_indicator) {
28286             p->level--;
28287             return NULL;
28288         }
28289         D(fprintf(stderr, "%*c> _loop1_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
28290         NameDefaultPair* lambda_param_with_default_var;
28291         while (
28292             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
28293         )
28294         {
28295             _res = lambda_param_with_default_var;
28296             if (_n == _children_capacity) {
28297                 _children_capacity *= 2;
28298                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28299                 if (!_new_children) {
28300                     p->error_indicator = 1;
28301                     PyErr_NoMemory();
28302                     p->level--;
28303                     return NULL;
28304                 }
28305                 _children = _new_children;
28306             }
28307             _children[_n++] = _res;
28308             _mark = p->mark;
28309         }
28310         p->mark = _mark;
28311         D(fprintf(stderr, "%*c%s _loop1_101[%d-%d]: %s failed!\n", p->level, ' ',
28312                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
28313     }
28314     if (_n == 0 || p->error_indicator) {
28315         PyMem_Free(_children);
28316         p->level--;
28317         return NULL;
28318     }
28319     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28320     if (!_seq) {
28321         PyMem_Free(_children);
28322         p->error_indicator = 1;
28323         PyErr_NoMemory();
28324         p->level--;
28325         return NULL;
28326     }
28327     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28328     PyMem_Free(_children);
28329     _PyPegen_insert_memo(p, _start_mark, _loop1_101_type, _seq);
28330     p->level--;
28331     return _seq;
28332 }
28333 
28334 // _loop0_102: lambda_param_maybe_default
28335 static asdl_seq *
_loop0_102_rule(Parser * p)28336 _loop0_102_rule(Parser *p)
28337 {
28338     if (p->level++ == MAXSTACK) {
28339         p->error_indicator = 1;
28340         PyErr_NoMemory();
28341     }
28342     if (p->error_indicator) {
28343         p->level--;
28344         return NULL;
28345     }
28346     void *_res = NULL;
28347     int _mark = p->mark;
28348     int _start_mark = p->mark;
28349     void **_children = PyMem_Malloc(sizeof(void *));
28350     if (!_children) {
28351         p->error_indicator = 1;
28352         PyErr_NoMemory();
28353         p->level--;
28354         return NULL;
28355     }
28356     Py_ssize_t _children_capacity = 1;
28357     Py_ssize_t _n = 0;
28358     { // lambda_param_maybe_default
28359         if (p->error_indicator) {
28360             p->level--;
28361             return NULL;
28362         }
28363         D(fprintf(stderr, "%*c> _loop0_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
28364         NameDefaultPair* lambda_param_maybe_default_var;
28365         while (
28366             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
28367         )
28368         {
28369             _res = lambda_param_maybe_default_var;
28370             if (_n == _children_capacity) {
28371                 _children_capacity *= 2;
28372                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28373                 if (!_new_children) {
28374                     p->error_indicator = 1;
28375                     PyErr_NoMemory();
28376                     p->level--;
28377                     return NULL;
28378                 }
28379                 _children = _new_children;
28380             }
28381             _children[_n++] = _res;
28382             _mark = p->mark;
28383         }
28384         p->mark = _mark;
28385         D(fprintf(stderr, "%*c%s _loop0_102[%d-%d]: %s failed!\n", p->level, ' ',
28386                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
28387     }
28388     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28389     if (!_seq) {
28390         PyMem_Free(_children);
28391         p->error_indicator = 1;
28392         PyErr_NoMemory();
28393         p->level--;
28394         return NULL;
28395     }
28396     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28397     PyMem_Free(_children);
28398     _PyPegen_insert_memo(p, _start_mark, _loop0_102_type, _seq);
28399     p->level--;
28400     return _seq;
28401 }
28402 
28403 // _loop1_103: lambda_param_maybe_default
28404 static asdl_seq *
_loop1_103_rule(Parser * p)28405 _loop1_103_rule(Parser *p)
28406 {
28407     if (p->level++ == MAXSTACK) {
28408         p->error_indicator = 1;
28409         PyErr_NoMemory();
28410     }
28411     if (p->error_indicator) {
28412         p->level--;
28413         return NULL;
28414     }
28415     void *_res = NULL;
28416     int _mark = p->mark;
28417     int _start_mark = p->mark;
28418     void **_children = PyMem_Malloc(sizeof(void *));
28419     if (!_children) {
28420         p->error_indicator = 1;
28421         PyErr_NoMemory();
28422         p->level--;
28423         return NULL;
28424     }
28425     Py_ssize_t _children_capacity = 1;
28426     Py_ssize_t _n = 0;
28427     { // lambda_param_maybe_default
28428         if (p->error_indicator) {
28429             p->level--;
28430             return NULL;
28431         }
28432         D(fprintf(stderr, "%*c> _loop1_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
28433         NameDefaultPair* lambda_param_maybe_default_var;
28434         while (
28435             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
28436         )
28437         {
28438             _res = lambda_param_maybe_default_var;
28439             if (_n == _children_capacity) {
28440                 _children_capacity *= 2;
28441                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28442                 if (!_new_children) {
28443                     p->error_indicator = 1;
28444                     PyErr_NoMemory();
28445                     p->level--;
28446                     return NULL;
28447                 }
28448                 _children = _new_children;
28449             }
28450             _children[_n++] = _res;
28451             _mark = p->mark;
28452         }
28453         p->mark = _mark;
28454         D(fprintf(stderr, "%*c%s _loop1_103[%d-%d]: %s failed!\n", p->level, ' ',
28455                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
28456     }
28457     if (_n == 0 || p->error_indicator) {
28458         PyMem_Free(_children);
28459         p->level--;
28460         return NULL;
28461     }
28462     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28463     if (!_seq) {
28464         PyMem_Free(_children);
28465         p->error_indicator = 1;
28466         PyErr_NoMemory();
28467         p->level--;
28468         return NULL;
28469     }
28470     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28471     PyMem_Free(_children);
28472     _PyPegen_insert_memo(p, _start_mark, _loop1_103_type, _seq);
28473     p->level--;
28474     return _seq;
28475 }
28476 
28477 // _loop1_104: ('or' conjunction)
28478 static asdl_seq *
_loop1_104_rule(Parser * p)28479 _loop1_104_rule(Parser *p)
28480 {
28481     if (p->level++ == MAXSTACK) {
28482         p->error_indicator = 1;
28483         PyErr_NoMemory();
28484     }
28485     if (p->error_indicator) {
28486         p->level--;
28487         return NULL;
28488     }
28489     void *_res = NULL;
28490     int _mark = p->mark;
28491     int _start_mark = p->mark;
28492     void **_children = PyMem_Malloc(sizeof(void *));
28493     if (!_children) {
28494         p->error_indicator = 1;
28495         PyErr_NoMemory();
28496         p->level--;
28497         return NULL;
28498     }
28499     Py_ssize_t _children_capacity = 1;
28500     Py_ssize_t _n = 0;
28501     { // ('or' conjunction)
28502         if (p->error_indicator) {
28503             p->level--;
28504             return NULL;
28505         }
28506         D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
28507         void *_tmp_187_var;
28508         while (
28509             (_tmp_187_var = _tmp_187_rule(p))  // 'or' conjunction
28510         )
28511         {
28512             _res = _tmp_187_var;
28513             if (_n == _children_capacity) {
28514                 _children_capacity *= 2;
28515                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28516                 if (!_new_children) {
28517                     p->error_indicator = 1;
28518                     PyErr_NoMemory();
28519                     p->level--;
28520                     return NULL;
28521                 }
28522                 _children = _new_children;
28523             }
28524             _children[_n++] = _res;
28525             _mark = p->mark;
28526         }
28527         p->mark = _mark;
28528         D(fprintf(stderr, "%*c%s _loop1_104[%d-%d]: %s failed!\n", p->level, ' ',
28529                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
28530     }
28531     if (_n == 0 || p->error_indicator) {
28532         PyMem_Free(_children);
28533         p->level--;
28534         return NULL;
28535     }
28536     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28537     if (!_seq) {
28538         PyMem_Free(_children);
28539         p->error_indicator = 1;
28540         PyErr_NoMemory();
28541         p->level--;
28542         return NULL;
28543     }
28544     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28545     PyMem_Free(_children);
28546     _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
28547     p->level--;
28548     return _seq;
28549 }
28550 
28551 // _loop1_105: ('and' inversion)
28552 static asdl_seq *
_loop1_105_rule(Parser * p)28553 _loop1_105_rule(Parser *p)
28554 {
28555     if (p->level++ == MAXSTACK) {
28556         p->error_indicator = 1;
28557         PyErr_NoMemory();
28558     }
28559     if (p->error_indicator) {
28560         p->level--;
28561         return NULL;
28562     }
28563     void *_res = NULL;
28564     int _mark = p->mark;
28565     int _start_mark = p->mark;
28566     void **_children = PyMem_Malloc(sizeof(void *));
28567     if (!_children) {
28568         p->error_indicator = 1;
28569         PyErr_NoMemory();
28570         p->level--;
28571         return NULL;
28572     }
28573     Py_ssize_t _children_capacity = 1;
28574     Py_ssize_t _n = 0;
28575     { // ('and' inversion)
28576         if (p->error_indicator) {
28577             p->level--;
28578             return NULL;
28579         }
28580         D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
28581         void *_tmp_188_var;
28582         while (
28583             (_tmp_188_var = _tmp_188_rule(p))  // 'and' inversion
28584         )
28585         {
28586             _res = _tmp_188_var;
28587             if (_n == _children_capacity) {
28588                 _children_capacity *= 2;
28589                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28590                 if (!_new_children) {
28591                     p->error_indicator = 1;
28592                     PyErr_NoMemory();
28593                     p->level--;
28594                     return NULL;
28595                 }
28596                 _children = _new_children;
28597             }
28598             _children[_n++] = _res;
28599             _mark = p->mark;
28600         }
28601         p->mark = _mark;
28602         D(fprintf(stderr, "%*c%s _loop1_105[%d-%d]: %s failed!\n", p->level, ' ',
28603                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
28604     }
28605     if (_n == 0 || p->error_indicator) {
28606         PyMem_Free(_children);
28607         p->level--;
28608         return NULL;
28609     }
28610     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28611     if (!_seq) {
28612         PyMem_Free(_children);
28613         p->error_indicator = 1;
28614         PyErr_NoMemory();
28615         p->level--;
28616         return NULL;
28617     }
28618     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28619     PyMem_Free(_children);
28620     _PyPegen_insert_memo(p, _start_mark, _loop1_105_type, _seq);
28621     p->level--;
28622     return _seq;
28623 }
28624 
28625 // _loop1_106: compare_op_bitwise_or_pair
28626 static asdl_seq *
_loop1_106_rule(Parser * p)28627 _loop1_106_rule(Parser *p)
28628 {
28629     if (p->level++ == MAXSTACK) {
28630         p->error_indicator = 1;
28631         PyErr_NoMemory();
28632     }
28633     if (p->error_indicator) {
28634         p->level--;
28635         return NULL;
28636     }
28637     void *_res = NULL;
28638     int _mark = p->mark;
28639     int _start_mark = p->mark;
28640     void **_children = PyMem_Malloc(sizeof(void *));
28641     if (!_children) {
28642         p->error_indicator = 1;
28643         PyErr_NoMemory();
28644         p->level--;
28645         return NULL;
28646     }
28647     Py_ssize_t _children_capacity = 1;
28648     Py_ssize_t _n = 0;
28649     { // compare_op_bitwise_or_pair
28650         if (p->error_indicator) {
28651             p->level--;
28652             return NULL;
28653         }
28654         D(fprintf(stderr, "%*c> _loop1_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
28655         CmpopExprPair* compare_op_bitwise_or_pair_var;
28656         while (
28657             (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
28658         )
28659         {
28660             _res = compare_op_bitwise_or_pair_var;
28661             if (_n == _children_capacity) {
28662                 _children_capacity *= 2;
28663                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28664                 if (!_new_children) {
28665                     p->error_indicator = 1;
28666                     PyErr_NoMemory();
28667                     p->level--;
28668                     return NULL;
28669                 }
28670                 _children = _new_children;
28671             }
28672             _children[_n++] = _res;
28673             _mark = p->mark;
28674         }
28675         p->mark = _mark;
28676         D(fprintf(stderr, "%*c%s _loop1_106[%d-%d]: %s failed!\n", p->level, ' ',
28677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
28678     }
28679     if (_n == 0 || p->error_indicator) {
28680         PyMem_Free(_children);
28681         p->level--;
28682         return NULL;
28683     }
28684     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28685     if (!_seq) {
28686         PyMem_Free(_children);
28687         p->error_indicator = 1;
28688         PyErr_NoMemory();
28689         p->level--;
28690         return NULL;
28691     }
28692     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28693     PyMem_Free(_children);
28694     _PyPegen_insert_memo(p, _start_mark, _loop1_106_type, _seq);
28695     p->level--;
28696     return _seq;
28697 }
28698 
28699 // _tmp_107: '!='
28700 static void *
_tmp_107_rule(Parser * p)28701 _tmp_107_rule(Parser *p)
28702 {
28703     if (p->level++ == MAXSTACK) {
28704         p->error_indicator = 1;
28705         PyErr_NoMemory();
28706     }
28707     if (p->error_indicator) {
28708         p->level--;
28709         return NULL;
28710     }
28711     void * _res = NULL;
28712     int _mark = p->mark;
28713     { // '!='
28714         if (p->error_indicator) {
28715             p->level--;
28716             return NULL;
28717         }
28718         D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
28719         Token * tok;
28720         if (
28721             (tok = _PyPegen_expect_token(p, 28))  // token='!='
28722         )
28723         {
28724             D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
28725             _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
28726             if (_res == NULL && PyErr_Occurred()) {
28727                 p->error_indicator = 1;
28728                 p->level--;
28729                 return NULL;
28730             }
28731             goto done;
28732         }
28733         p->mark = _mark;
28734         D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
28735                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
28736     }
28737     _res = NULL;
28738   done:
28739     p->level--;
28740     return _res;
28741 }
28742 
28743 // _loop0_109: ',' slice
28744 static asdl_seq *
_loop0_109_rule(Parser * p)28745 _loop0_109_rule(Parser *p)
28746 {
28747     if (p->level++ == MAXSTACK) {
28748         p->error_indicator = 1;
28749         PyErr_NoMemory();
28750     }
28751     if (p->error_indicator) {
28752         p->level--;
28753         return NULL;
28754     }
28755     void *_res = NULL;
28756     int _mark = p->mark;
28757     int _start_mark = p->mark;
28758     void **_children = PyMem_Malloc(sizeof(void *));
28759     if (!_children) {
28760         p->error_indicator = 1;
28761         PyErr_NoMemory();
28762         p->level--;
28763         return NULL;
28764     }
28765     Py_ssize_t _children_capacity = 1;
28766     Py_ssize_t _n = 0;
28767     { // ',' slice
28768         if (p->error_indicator) {
28769             p->level--;
28770             return NULL;
28771         }
28772         D(fprintf(stderr, "%*c> _loop0_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' slice"));
28773         Token * _literal;
28774         expr_ty elem;
28775         while (
28776             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28777             &&
28778             (elem = slice_rule(p))  // slice
28779         )
28780         {
28781             _res = elem;
28782             if (_res == NULL && PyErr_Occurred()) {
28783                 p->error_indicator = 1;
28784                 PyMem_Free(_children);
28785                 p->level--;
28786                 return NULL;
28787             }
28788             if (_n == _children_capacity) {
28789                 _children_capacity *= 2;
28790                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28791                 if (!_new_children) {
28792                     p->error_indicator = 1;
28793                     PyErr_NoMemory();
28794                     p->level--;
28795                     return NULL;
28796                 }
28797                 _children = _new_children;
28798             }
28799             _children[_n++] = _res;
28800             _mark = p->mark;
28801         }
28802         p->mark = _mark;
28803         D(fprintf(stderr, "%*c%s _loop0_109[%d-%d]: %s failed!\n", p->level, ' ',
28804                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' slice"));
28805     }
28806     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28807     if (!_seq) {
28808         PyMem_Free(_children);
28809         p->error_indicator = 1;
28810         PyErr_NoMemory();
28811         p->level--;
28812         return NULL;
28813     }
28814     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28815     PyMem_Free(_children);
28816     _PyPegen_insert_memo(p, _start_mark, _loop0_109_type, _seq);
28817     p->level--;
28818     return _seq;
28819 }
28820 
28821 // _gather_108: slice _loop0_109
28822 static asdl_seq *
_gather_108_rule(Parser * p)28823 _gather_108_rule(Parser *p)
28824 {
28825     if (p->level++ == MAXSTACK) {
28826         p->error_indicator = 1;
28827         PyErr_NoMemory();
28828     }
28829     if (p->error_indicator) {
28830         p->level--;
28831         return NULL;
28832     }
28833     asdl_seq * _res = NULL;
28834     int _mark = p->mark;
28835     { // slice _loop0_109
28836         if (p->error_indicator) {
28837             p->level--;
28838             return NULL;
28839         }
28840         D(fprintf(stderr, "%*c> _gather_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice _loop0_109"));
28841         expr_ty elem;
28842         asdl_seq * seq;
28843         if (
28844             (elem = slice_rule(p))  // slice
28845             &&
28846             (seq = _loop0_109_rule(p))  // _loop0_109
28847         )
28848         {
28849             D(fprintf(stderr, "%*c+ _gather_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice _loop0_109"));
28850             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28851             goto done;
28852         }
28853         p->mark = _mark;
28854         D(fprintf(stderr, "%*c%s _gather_108[%d-%d]: %s failed!\n", p->level, ' ',
28855                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice _loop0_109"));
28856     }
28857     _res = NULL;
28858   done:
28859     p->level--;
28860     return _res;
28861 }
28862 
28863 // _tmp_110: ':' expression?
28864 static void *
_tmp_110_rule(Parser * p)28865 _tmp_110_rule(Parser *p)
28866 {
28867     if (p->level++ == MAXSTACK) {
28868         p->error_indicator = 1;
28869         PyErr_NoMemory();
28870     }
28871     if (p->error_indicator) {
28872         p->level--;
28873         return NULL;
28874     }
28875     void * _res = NULL;
28876     int _mark = p->mark;
28877     { // ':' expression?
28878         if (p->error_indicator) {
28879             p->level--;
28880             return NULL;
28881         }
28882         D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
28883         Token * _literal;
28884         void *d;
28885         if (
28886             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
28887             &&
28888             (d = expression_rule(p), !p->error_indicator)  // expression?
28889         )
28890         {
28891             D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
28892             _res = d;
28893             if (_res == NULL && PyErr_Occurred()) {
28894                 p->error_indicator = 1;
28895                 p->level--;
28896                 return NULL;
28897             }
28898             goto done;
28899         }
28900         p->mark = _mark;
28901         D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
28902                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
28903     }
28904     _res = NULL;
28905   done:
28906     p->level--;
28907     return _res;
28908 }
28909 
28910 // _tmp_111: tuple | group | genexp
28911 static void *
_tmp_111_rule(Parser * p)28912 _tmp_111_rule(Parser *p)
28913 {
28914     if (p->level++ == MAXSTACK) {
28915         p->error_indicator = 1;
28916         PyErr_NoMemory();
28917     }
28918     if (p->error_indicator) {
28919         p->level--;
28920         return NULL;
28921     }
28922     void * _res = NULL;
28923     int _mark = p->mark;
28924     { // tuple
28925         if (p->error_indicator) {
28926             p->level--;
28927             return NULL;
28928         }
28929         D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
28930         expr_ty tuple_var;
28931         if (
28932             (tuple_var = tuple_rule(p))  // tuple
28933         )
28934         {
28935             D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
28936             _res = tuple_var;
28937             goto done;
28938         }
28939         p->mark = _mark;
28940         D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
28941                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
28942     }
28943     { // group
28944         if (p->error_indicator) {
28945             p->level--;
28946             return NULL;
28947         }
28948         D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
28949         expr_ty group_var;
28950         if (
28951             (group_var = group_rule(p))  // group
28952         )
28953         {
28954             D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
28955             _res = group_var;
28956             goto done;
28957         }
28958         p->mark = _mark;
28959         D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
28960                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
28961     }
28962     { // genexp
28963         if (p->error_indicator) {
28964             p->level--;
28965             return NULL;
28966         }
28967         D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
28968         expr_ty genexp_var;
28969         if (
28970             (genexp_var = genexp_rule(p))  // genexp
28971         )
28972         {
28973             D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
28974             _res = genexp_var;
28975             goto done;
28976         }
28977         p->mark = _mark;
28978         D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
28979                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
28980     }
28981     _res = NULL;
28982   done:
28983     p->level--;
28984     return _res;
28985 }
28986 
28987 // _tmp_112: list | listcomp
28988 static void *
_tmp_112_rule(Parser * p)28989 _tmp_112_rule(Parser *p)
28990 {
28991     if (p->level++ == MAXSTACK) {
28992         p->error_indicator = 1;
28993         PyErr_NoMemory();
28994     }
28995     if (p->error_indicator) {
28996         p->level--;
28997         return NULL;
28998     }
28999     void * _res = NULL;
29000     int _mark = p->mark;
29001     { // list
29002         if (p->error_indicator) {
29003             p->level--;
29004             return NULL;
29005         }
29006         D(fprintf(stderr, "%*c> _tmp_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
29007         expr_ty list_var;
29008         if (
29009             (list_var = list_rule(p))  // list
29010         )
29011         {
29012             D(fprintf(stderr, "%*c+ _tmp_112[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
29013             _res = list_var;
29014             goto done;
29015         }
29016         p->mark = _mark;
29017         D(fprintf(stderr, "%*c%s _tmp_112[%d-%d]: %s failed!\n", p->level, ' ',
29018                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
29019     }
29020     { // listcomp
29021         if (p->error_indicator) {
29022             p->level--;
29023             return NULL;
29024         }
29025         D(fprintf(stderr, "%*c> _tmp_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
29026         expr_ty listcomp_var;
29027         if (
29028             (listcomp_var = listcomp_rule(p))  // listcomp
29029         )
29030         {
29031             D(fprintf(stderr, "%*c+ _tmp_112[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
29032             _res = listcomp_var;
29033             goto done;
29034         }
29035         p->mark = _mark;
29036         D(fprintf(stderr, "%*c%s _tmp_112[%d-%d]: %s failed!\n", p->level, ' ',
29037                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
29038     }
29039     _res = NULL;
29040   done:
29041     p->level--;
29042     return _res;
29043 }
29044 
29045 // _tmp_113: dict | set | dictcomp | setcomp
29046 static void *
_tmp_113_rule(Parser * p)29047 _tmp_113_rule(Parser *p)
29048 {
29049     if (p->level++ == MAXSTACK) {
29050         p->error_indicator = 1;
29051         PyErr_NoMemory();
29052     }
29053     if (p->error_indicator) {
29054         p->level--;
29055         return NULL;
29056     }
29057     void * _res = NULL;
29058     int _mark = p->mark;
29059     { // dict
29060         if (p->error_indicator) {
29061             p->level--;
29062             return NULL;
29063         }
29064         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
29065         expr_ty dict_var;
29066         if (
29067             (dict_var = dict_rule(p))  // dict
29068         )
29069         {
29070             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
29071             _res = dict_var;
29072             goto done;
29073         }
29074         p->mark = _mark;
29075         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
29076                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
29077     }
29078     { // set
29079         if (p->error_indicator) {
29080             p->level--;
29081             return NULL;
29082         }
29083         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
29084         expr_ty set_var;
29085         if (
29086             (set_var = set_rule(p))  // set
29087         )
29088         {
29089             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
29090             _res = set_var;
29091             goto done;
29092         }
29093         p->mark = _mark;
29094         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
29095                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
29096     }
29097     { // dictcomp
29098         if (p->error_indicator) {
29099             p->level--;
29100             return NULL;
29101         }
29102         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
29103         expr_ty dictcomp_var;
29104         if (
29105             (dictcomp_var = dictcomp_rule(p))  // dictcomp
29106         )
29107         {
29108             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
29109             _res = dictcomp_var;
29110             goto done;
29111         }
29112         p->mark = _mark;
29113         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
29114                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
29115     }
29116     { // setcomp
29117         if (p->error_indicator) {
29118             p->level--;
29119             return NULL;
29120         }
29121         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
29122         expr_ty setcomp_var;
29123         if (
29124             (setcomp_var = setcomp_rule(p))  // setcomp
29125         )
29126         {
29127             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
29128             _res = setcomp_var;
29129             goto done;
29130         }
29131         p->mark = _mark;
29132         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
29133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
29134     }
29135     _res = NULL;
29136   done:
29137     p->level--;
29138     return _res;
29139 }
29140 
29141 // _loop1_114: STRING
29142 static asdl_seq *
_loop1_114_rule(Parser * p)29143 _loop1_114_rule(Parser *p)
29144 {
29145     if (p->level++ == MAXSTACK) {
29146         p->error_indicator = 1;
29147         PyErr_NoMemory();
29148     }
29149     if (p->error_indicator) {
29150         p->level--;
29151         return NULL;
29152     }
29153     void *_res = NULL;
29154     int _mark = p->mark;
29155     int _start_mark = p->mark;
29156     void **_children = PyMem_Malloc(sizeof(void *));
29157     if (!_children) {
29158         p->error_indicator = 1;
29159         PyErr_NoMemory();
29160         p->level--;
29161         return NULL;
29162     }
29163     Py_ssize_t _children_capacity = 1;
29164     Py_ssize_t _n = 0;
29165     { // STRING
29166         if (p->error_indicator) {
29167             p->level--;
29168             return NULL;
29169         }
29170         D(fprintf(stderr, "%*c> _loop1_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
29171         expr_ty string_var;
29172         while (
29173             (string_var = _PyPegen_string_token(p))  // STRING
29174         )
29175         {
29176             _res = string_var;
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                     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 _loop1_114[%d-%d]: %s failed!\n", p->level, ' ',
29193                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
29194     }
29195     if (_n == 0 || p->error_indicator) {
29196         PyMem_Free(_children);
29197         p->level--;
29198         return NULL;
29199     }
29200     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29201     if (!_seq) {
29202         PyMem_Free(_children);
29203         p->error_indicator = 1;
29204         PyErr_NoMemory();
29205         p->level--;
29206         return NULL;
29207     }
29208     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29209     PyMem_Free(_children);
29210     _PyPegen_insert_memo(p, _start_mark, _loop1_114_type, _seq);
29211     p->level--;
29212     return _seq;
29213 }
29214 
29215 // _tmp_115: star_named_expression ',' star_named_expressions?
29216 static void *
_tmp_115_rule(Parser * p)29217 _tmp_115_rule(Parser *p)
29218 {
29219     if (p->level++ == MAXSTACK) {
29220         p->error_indicator = 1;
29221         PyErr_NoMemory();
29222     }
29223     if (p->error_indicator) {
29224         p->level--;
29225         return NULL;
29226     }
29227     void * _res = NULL;
29228     int _mark = p->mark;
29229     { // star_named_expression ',' star_named_expressions?
29230         if (p->error_indicator) {
29231             p->level--;
29232             return NULL;
29233         }
29234         D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
29235         Token * _literal;
29236         expr_ty y;
29237         void *z;
29238         if (
29239             (y = star_named_expression_rule(p))  // star_named_expression
29240             &&
29241             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29242             &&
29243             (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
29244         )
29245         {
29246             D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
29247             _res = _PyPegen_seq_insert_in_front ( p , y , z );
29248             if (_res == NULL && PyErr_Occurred()) {
29249                 p->error_indicator = 1;
29250                 p->level--;
29251                 return NULL;
29252             }
29253             goto done;
29254         }
29255         p->mark = _mark;
29256         D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
29257                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
29258     }
29259     _res = NULL;
29260   done:
29261     p->level--;
29262     return _res;
29263 }
29264 
29265 // _tmp_116: yield_expr | named_expression
29266 static void *
_tmp_116_rule(Parser * p)29267 _tmp_116_rule(Parser *p)
29268 {
29269     if (p->level++ == MAXSTACK) {
29270         p->error_indicator = 1;
29271         PyErr_NoMemory();
29272     }
29273     if (p->error_indicator) {
29274         p->level--;
29275         return NULL;
29276     }
29277     void * _res = NULL;
29278     int _mark = p->mark;
29279     { // yield_expr
29280         if (p->error_indicator) {
29281             p->level--;
29282             return NULL;
29283         }
29284         D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
29285         expr_ty yield_expr_var;
29286         if (
29287             (yield_expr_var = yield_expr_rule(p))  // yield_expr
29288         )
29289         {
29290             D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
29291             _res = yield_expr_var;
29292             goto done;
29293         }
29294         p->mark = _mark;
29295         D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
29296                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
29297     }
29298     { // named_expression
29299         if (p->error_indicator) {
29300             p->level--;
29301             return NULL;
29302         }
29303         D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
29304         expr_ty named_expression_var;
29305         if (
29306             (named_expression_var = named_expression_rule(p))  // named_expression
29307         )
29308         {
29309             D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
29310             _res = named_expression_var;
29311             goto done;
29312         }
29313         p->mark = _mark;
29314         D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
29315                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
29316     }
29317     _res = NULL;
29318   done:
29319     p->level--;
29320     return _res;
29321 }
29322 
29323 // _tmp_117: assignment_expression | expression !':='
29324 static void *
_tmp_117_rule(Parser * p)29325 _tmp_117_rule(Parser *p)
29326 {
29327     if (p->level++ == MAXSTACK) {
29328         p->error_indicator = 1;
29329         PyErr_NoMemory();
29330     }
29331     if (p->error_indicator) {
29332         p->level--;
29333         return NULL;
29334     }
29335     void * _res = NULL;
29336     int _mark = p->mark;
29337     { // assignment_expression
29338         if (p->error_indicator) {
29339             p->level--;
29340             return NULL;
29341         }
29342         D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
29343         expr_ty assignment_expression_var;
29344         if (
29345             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
29346         )
29347         {
29348             D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
29349             _res = assignment_expression_var;
29350             goto done;
29351         }
29352         p->mark = _mark;
29353         D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
29354                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
29355     }
29356     { // expression !':='
29357         if (p->error_indicator) {
29358             p->level--;
29359             return NULL;
29360         }
29361         D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
29362         expr_ty expression_var;
29363         if (
29364             (expression_var = expression_rule(p))  // expression
29365             &&
29366             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
29367         )
29368         {
29369             D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
29370             _res = expression_var;
29371             goto done;
29372         }
29373         p->mark = _mark;
29374         D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
29375                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
29376     }
29377     _res = NULL;
29378   done:
29379     p->level--;
29380     return _res;
29381 }
29382 
29383 // _loop0_119: ',' double_starred_kvpair
29384 static asdl_seq *
_loop0_119_rule(Parser * p)29385 _loop0_119_rule(Parser *p)
29386 {
29387     if (p->level++ == MAXSTACK) {
29388         p->error_indicator = 1;
29389         PyErr_NoMemory();
29390     }
29391     if (p->error_indicator) {
29392         p->level--;
29393         return NULL;
29394     }
29395     void *_res = NULL;
29396     int _mark = p->mark;
29397     int _start_mark = p->mark;
29398     void **_children = PyMem_Malloc(sizeof(void *));
29399     if (!_children) {
29400         p->error_indicator = 1;
29401         PyErr_NoMemory();
29402         p->level--;
29403         return NULL;
29404     }
29405     Py_ssize_t _children_capacity = 1;
29406     Py_ssize_t _n = 0;
29407     { // ',' double_starred_kvpair
29408         if (p->error_indicator) {
29409             p->level--;
29410             return NULL;
29411         }
29412         D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
29413         Token * _literal;
29414         KeyValuePair* elem;
29415         while (
29416             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29417             &&
29418             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
29419         )
29420         {
29421             _res = elem;
29422             if (_res == NULL && PyErr_Occurred()) {
29423                 p->error_indicator = 1;
29424                 PyMem_Free(_children);
29425                 p->level--;
29426                 return NULL;
29427             }
29428             if (_n == _children_capacity) {
29429                 _children_capacity *= 2;
29430                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29431                 if (!_new_children) {
29432                     p->error_indicator = 1;
29433                     PyErr_NoMemory();
29434                     p->level--;
29435                     return NULL;
29436                 }
29437                 _children = _new_children;
29438             }
29439             _children[_n++] = _res;
29440             _mark = p->mark;
29441         }
29442         p->mark = _mark;
29443         D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ',
29444                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
29445     }
29446     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29447     if (!_seq) {
29448         PyMem_Free(_children);
29449         p->error_indicator = 1;
29450         PyErr_NoMemory();
29451         p->level--;
29452         return NULL;
29453     }
29454     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29455     PyMem_Free(_children);
29456     _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
29457     p->level--;
29458     return _seq;
29459 }
29460 
29461 // _gather_118: double_starred_kvpair _loop0_119
29462 static asdl_seq *
_gather_118_rule(Parser * p)29463 _gather_118_rule(Parser *p)
29464 {
29465     if (p->level++ == MAXSTACK) {
29466         p->error_indicator = 1;
29467         PyErr_NoMemory();
29468     }
29469     if (p->error_indicator) {
29470         p->level--;
29471         return NULL;
29472     }
29473     asdl_seq * _res = NULL;
29474     int _mark = p->mark;
29475     { // double_starred_kvpair _loop0_119
29476         if (p->error_indicator) {
29477             p->level--;
29478             return NULL;
29479         }
29480         D(fprintf(stderr, "%*c> _gather_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_119"));
29481         KeyValuePair* elem;
29482         asdl_seq * seq;
29483         if (
29484             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
29485             &&
29486             (seq = _loop0_119_rule(p))  // _loop0_119
29487         )
29488         {
29489             D(fprintf(stderr, "%*c+ _gather_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_119"));
29490             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29491             goto done;
29492         }
29493         p->mark = _mark;
29494         D(fprintf(stderr, "%*c%s _gather_118[%d-%d]: %s failed!\n", p->level, ' ',
29495                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_119"));
29496     }
29497     _res = NULL;
29498   done:
29499     p->level--;
29500     return _res;
29501 }
29502 
29503 // _loop1_120: for_if_clause
29504 static asdl_seq *
_loop1_120_rule(Parser * p)29505 _loop1_120_rule(Parser *p)
29506 {
29507     if (p->level++ == MAXSTACK) {
29508         p->error_indicator = 1;
29509         PyErr_NoMemory();
29510     }
29511     if (p->error_indicator) {
29512         p->level--;
29513         return NULL;
29514     }
29515     void *_res = NULL;
29516     int _mark = p->mark;
29517     int _start_mark = p->mark;
29518     void **_children = PyMem_Malloc(sizeof(void *));
29519     if (!_children) {
29520         p->error_indicator = 1;
29521         PyErr_NoMemory();
29522         p->level--;
29523         return NULL;
29524     }
29525     Py_ssize_t _children_capacity = 1;
29526     Py_ssize_t _n = 0;
29527     { // for_if_clause
29528         if (p->error_indicator) {
29529             p->level--;
29530             return NULL;
29531         }
29532         D(fprintf(stderr, "%*c> _loop1_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
29533         comprehension_ty for_if_clause_var;
29534         while (
29535             (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
29536         )
29537         {
29538             _res = for_if_clause_var;
29539             if (_n == _children_capacity) {
29540                 _children_capacity *= 2;
29541                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29542                 if (!_new_children) {
29543                     p->error_indicator = 1;
29544                     PyErr_NoMemory();
29545                     p->level--;
29546                     return NULL;
29547                 }
29548                 _children = _new_children;
29549             }
29550             _children[_n++] = _res;
29551             _mark = p->mark;
29552         }
29553         p->mark = _mark;
29554         D(fprintf(stderr, "%*c%s _loop1_120[%d-%d]: %s failed!\n", p->level, ' ',
29555                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
29556     }
29557     if (_n == 0 || p->error_indicator) {
29558         PyMem_Free(_children);
29559         p->level--;
29560         return NULL;
29561     }
29562     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29563     if (!_seq) {
29564         PyMem_Free(_children);
29565         p->error_indicator = 1;
29566         PyErr_NoMemory();
29567         p->level--;
29568         return NULL;
29569     }
29570     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29571     PyMem_Free(_children);
29572     _PyPegen_insert_memo(p, _start_mark, _loop1_120_type, _seq);
29573     p->level--;
29574     return _seq;
29575 }
29576 
29577 // _loop0_121: ('if' disjunction)
29578 static asdl_seq *
_loop0_121_rule(Parser * p)29579 _loop0_121_rule(Parser *p)
29580 {
29581     if (p->level++ == MAXSTACK) {
29582         p->error_indicator = 1;
29583         PyErr_NoMemory();
29584     }
29585     if (p->error_indicator) {
29586         p->level--;
29587         return NULL;
29588     }
29589     void *_res = NULL;
29590     int _mark = p->mark;
29591     int _start_mark = p->mark;
29592     void **_children = PyMem_Malloc(sizeof(void *));
29593     if (!_children) {
29594         p->error_indicator = 1;
29595         PyErr_NoMemory();
29596         p->level--;
29597         return NULL;
29598     }
29599     Py_ssize_t _children_capacity = 1;
29600     Py_ssize_t _n = 0;
29601     { // ('if' disjunction)
29602         if (p->error_indicator) {
29603             p->level--;
29604             return NULL;
29605         }
29606         D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
29607         void *_tmp_189_var;
29608         while (
29609             (_tmp_189_var = _tmp_189_rule(p))  // 'if' disjunction
29610         )
29611         {
29612             _res = _tmp_189_var;
29613             if (_n == _children_capacity) {
29614                 _children_capacity *= 2;
29615                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29616                 if (!_new_children) {
29617                     p->error_indicator = 1;
29618                     PyErr_NoMemory();
29619                     p->level--;
29620                     return NULL;
29621                 }
29622                 _children = _new_children;
29623             }
29624             _children[_n++] = _res;
29625             _mark = p->mark;
29626         }
29627         p->mark = _mark;
29628         D(fprintf(stderr, "%*c%s _loop0_121[%d-%d]: %s failed!\n", p->level, ' ',
29629                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
29630     }
29631     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29632     if (!_seq) {
29633         PyMem_Free(_children);
29634         p->error_indicator = 1;
29635         PyErr_NoMemory();
29636         p->level--;
29637         return NULL;
29638     }
29639     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29640     PyMem_Free(_children);
29641     _PyPegen_insert_memo(p, _start_mark, _loop0_121_type, _seq);
29642     p->level--;
29643     return _seq;
29644 }
29645 
29646 // _loop0_122: ('if' disjunction)
29647 static asdl_seq *
_loop0_122_rule(Parser * p)29648 _loop0_122_rule(Parser *p)
29649 {
29650     if (p->level++ == MAXSTACK) {
29651         p->error_indicator = 1;
29652         PyErr_NoMemory();
29653     }
29654     if (p->error_indicator) {
29655         p->level--;
29656         return NULL;
29657     }
29658     void *_res = NULL;
29659     int _mark = p->mark;
29660     int _start_mark = p->mark;
29661     void **_children = PyMem_Malloc(sizeof(void *));
29662     if (!_children) {
29663         p->error_indicator = 1;
29664         PyErr_NoMemory();
29665         p->level--;
29666         return NULL;
29667     }
29668     Py_ssize_t _children_capacity = 1;
29669     Py_ssize_t _n = 0;
29670     { // ('if' disjunction)
29671         if (p->error_indicator) {
29672             p->level--;
29673             return NULL;
29674         }
29675         D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
29676         void *_tmp_190_var;
29677         while (
29678             (_tmp_190_var = _tmp_190_rule(p))  // 'if' disjunction
29679         )
29680         {
29681             _res = _tmp_190_var;
29682             if (_n == _children_capacity) {
29683                 _children_capacity *= 2;
29684                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29685                 if (!_new_children) {
29686                     p->error_indicator = 1;
29687                     PyErr_NoMemory();
29688                     p->level--;
29689                     return NULL;
29690                 }
29691                 _children = _new_children;
29692             }
29693             _children[_n++] = _res;
29694             _mark = p->mark;
29695         }
29696         p->mark = _mark;
29697         D(fprintf(stderr, "%*c%s _loop0_122[%d-%d]: %s failed!\n", p->level, ' ',
29698                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
29699     }
29700     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29701     if (!_seq) {
29702         PyMem_Free(_children);
29703         p->error_indicator = 1;
29704         PyErr_NoMemory();
29705         p->level--;
29706         return NULL;
29707     }
29708     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29709     PyMem_Free(_children);
29710     _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
29711     p->level--;
29712     return _seq;
29713 }
29714 
29715 // _loop0_124: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
29716 static asdl_seq *
_loop0_124_rule(Parser * p)29717 _loop0_124_rule(Parser *p)
29718 {
29719     if (p->level++ == MAXSTACK) {
29720         p->error_indicator = 1;
29721         PyErr_NoMemory();
29722     }
29723     if (p->error_indicator) {
29724         p->level--;
29725         return NULL;
29726     }
29727     void *_res = NULL;
29728     int _mark = p->mark;
29729     int _start_mark = p->mark;
29730     void **_children = PyMem_Malloc(sizeof(void *));
29731     if (!_children) {
29732         p->error_indicator = 1;
29733         PyErr_NoMemory();
29734         p->level--;
29735         return NULL;
29736     }
29737     Py_ssize_t _children_capacity = 1;
29738     Py_ssize_t _n = 0;
29739     { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
29740         if (p->error_indicator) {
29741             p->level--;
29742             return NULL;
29743         }
29744         D(fprintf(stderr, "%*c> _loop0_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
29745         Token * _literal;
29746         void *elem;
29747         while (
29748             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29749             &&
29750             (elem = _tmp_191_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
29751         )
29752         {
29753             _res = elem;
29754             if (_res == NULL && PyErr_Occurred()) {
29755                 p->error_indicator = 1;
29756                 PyMem_Free(_children);
29757                 p->level--;
29758                 return NULL;
29759             }
29760             if (_n == _children_capacity) {
29761                 _children_capacity *= 2;
29762                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29763                 if (!_new_children) {
29764                     p->error_indicator = 1;
29765                     PyErr_NoMemory();
29766                     p->level--;
29767                     return NULL;
29768                 }
29769                 _children = _new_children;
29770             }
29771             _children[_n++] = _res;
29772             _mark = p->mark;
29773         }
29774         p->mark = _mark;
29775         D(fprintf(stderr, "%*c%s _loop0_124[%d-%d]: %s failed!\n", p->level, ' ',
29776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
29777     }
29778     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29779     if (!_seq) {
29780         PyMem_Free(_children);
29781         p->error_indicator = 1;
29782         PyErr_NoMemory();
29783         p->level--;
29784         return NULL;
29785     }
29786     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29787     PyMem_Free(_children);
29788     _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
29789     p->level--;
29790     return _seq;
29791 }
29792 
29793 // _gather_123:
29794 //     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124
29795 static asdl_seq *
_gather_123_rule(Parser * p)29796 _gather_123_rule(Parser *p)
29797 {
29798     if (p->level++ == MAXSTACK) {
29799         p->error_indicator = 1;
29800         PyErr_NoMemory();
29801     }
29802     if (p->error_indicator) {
29803         p->level--;
29804         return NULL;
29805     }
29806     asdl_seq * _res = NULL;
29807     int _mark = p->mark;
29808     { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124
29809         if (p->error_indicator) {
29810             p->level--;
29811             return NULL;
29812         }
29813         D(fprintf(stderr, "%*c> _gather_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124"));
29814         void *elem;
29815         asdl_seq * seq;
29816         if (
29817             (elem = _tmp_191_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
29818             &&
29819             (seq = _loop0_124_rule(p))  // _loop0_124
29820         )
29821         {
29822             D(fprintf(stderr, "%*c+ _gather_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124"));
29823             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29824             goto done;
29825         }
29826         p->mark = _mark;
29827         D(fprintf(stderr, "%*c%s _gather_123[%d-%d]: %s failed!\n", p->level, ' ',
29828                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124"));
29829     }
29830     _res = NULL;
29831   done:
29832     p->level--;
29833     return _res;
29834 }
29835 
29836 // _tmp_125: ',' kwargs
29837 static void *
_tmp_125_rule(Parser * p)29838 _tmp_125_rule(Parser *p)
29839 {
29840     if (p->level++ == MAXSTACK) {
29841         p->error_indicator = 1;
29842         PyErr_NoMemory();
29843     }
29844     if (p->error_indicator) {
29845         p->level--;
29846         return NULL;
29847     }
29848     void * _res = NULL;
29849     int _mark = p->mark;
29850     { // ',' kwargs
29851         if (p->error_indicator) {
29852             p->level--;
29853             return NULL;
29854         }
29855         D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
29856         Token * _literal;
29857         asdl_seq* k;
29858         if (
29859             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29860             &&
29861             (k = kwargs_rule(p))  // kwargs
29862         )
29863         {
29864             D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
29865             _res = k;
29866             if (_res == NULL && PyErr_Occurred()) {
29867                 p->error_indicator = 1;
29868                 p->level--;
29869                 return NULL;
29870             }
29871             goto done;
29872         }
29873         p->mark = _mark;
29874         D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
29875                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
29876     }
29877     _res = NULL;
29878   done:
29879     p->level--;
29880     return _res;
29881 }
29882 
29883 // _loop0_127: ',' kwarg_or_starred
29884 static asdl_seq *
_loop0_127_rule(Parser * p)29885 _loop0_127_rule(Parser *p)
29886 {
29887     if (p->level++ == MAXSTACK) {
29888         p->error_indicator = 1;
29889         PyErr_NoMemory();
29890     }
29891     if (p->error_indicator) {
29892         p->level--;
29893         return NULL;
29894     }
29895     void *_res = NULL;
29896     int _mark = p->mark;
29897     int _start_mark = p->mark;
29898     void **_children = PyMem_Malloc(sizeof(void *));
29899     if (!_children) {
29900         p->error_indicator = 1;
29901         PyErr_NoMemory();
29902         p->level--;
29903         return NULL;
29904     }
29905     Py_ssize_t _children_capacity = 1;
29906     Py_ssize_t _n = 0;
29907     { // ',' kwarg_or_starred
29908         if (p->error_indicator) {
29909             p->level--;
29910             return NULL;
29911         }
29912         D(fprintf(stderr, "%*c> _loop0_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
29913         Token * _literal;
29914         KeywordOrStarred* elem;
29915         while (
29916             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29917             &&
29918             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
29919         )
29920         {
29921             _res = elem;
29922             if (_res == NULL && PyErr_Occurred()) {
29923                 p->error_indicator = 1;
29924                 PyMem_Free(_children);
29925                 p->level--;
29926                 return NULL;
29927             }
29928             if (_n == _children_capacity) {
29929                 _children_capacity *= 2;
29930                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29931                 if (!_new_children) {
29932                     p->error_indicator = 1;
29933                     PyErr_NoMemory();
29934                     p->level--;
29935                     return NULL;
29936                 }
29937                 _children = _new_children;
29938             }
29939             _children[_n++] = _res;
29940             _mark = p->mark;
29941         }
29942         p->mark = _mark;
29943         D(fprintf(stderr, "%*c%s _loop0_127[%d-%d]: %s failed!\n", p->level, ' ',
29944                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
29945     }
29946     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29947     if (!_seq) {
29948         PyMem_Free(_children);
29949         p->error_indicator = 1;
29950         PyErr_NoMemory();
29951         p->level--;
29952         return NULL;
29953     }
29954     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29955     PyMem_Free(_children);
29956     _PyPegen_insert_memo(p, _start_mark, _loop0_127_type, _seq);
29957     p->level--;
29958     return _seq;
29959 }
29960 
29961 // _gather_126: kwarg_or_starred _loop0_127
29962 static asdl_seq *
_gather_126_rule(Parser * p)29963 _gather_126_rule(Parser *p)
29964 {
29965     if (p->level++ == MAXSTACK) {
29966         p->error_indicator = 1;
29967         PyErr_NoMemory();
29968     }
29969     if (p->error_indicator) {
29970         p->level--;
29971         return NULL;
29972     }
29973     asdl_seq * _res = NULL;
29974     int _mark = p->mark;
29975     { // kwarg_or_starred _loop0_127
29976         if (p->error_indicator) {
29977             p->level--;
29978             return NULL;
29979         }
29980         D(fprintf(stderr, "%*c> _gather_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_127"));
29981         KeywordOrStarred* elem;
29982         asdl_seq * seq;
29983         if (
29984             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
29985             &&
29986             (seq = _loop0_127_rule(p))  // _loop0_127
29987         )
29988         {
29989             D(fprintf(stderr, "%*c+ _gather_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_127"));
29990             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29991             goto done;
29992         }
29993         p->mark = _mark;
29994         D(fprintf(stderr, "%*c%s _gather_126[%d-%d]: %s failed!\n", p->level, ' ',
29995                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_127"));
29996     }
29997     _res = NULL;
29998   done:
29999     p->level--;
30000     return _res;
30001 }
30002 
30003 // _loop0_129: ',' kwarg_or_double_starred
30004 static asdl_seq *
_loop0_129_rule(Parser * p)30005 _loop0_129_rule(Parser *p)
30006 {
30007     if (p->level++ == MAXSTACK) {
30008         p->error_indicator = 1;
30009         PyErr_NoMemory();
30010     }
30011     if (p->error_indicator) {
30012         p->level--;
30013         return NULL;
30014     }
30015     void *_res = NULL;
30016     int _mark = p->mark;
30017     int _start_mark = p->mark;
30018     void **_children = PyMem_Malloc(sizeof(void *));
30019     if (!_children) {
30020         p->error_indicator = 1;
30021         PyErr_NoMemory();
30022         p->level--;
30023         return NULL;
30024     }
30025     Py_ssize_t _children_capacity = 1;
30026     Py_ssize_t _n = 0;
30027     { // ',' kwarg_or_double_starred
30028         if (p->error_indicator) {
30029             p->level--;
30030             return NULL;
30031         }
30032         D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
30033         Token * _literal;
30034         KeywordOrStarred* elem;
30035         while (
30036             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30037             &&
30038             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
30039         )
30040         {
30041             _res = elem;
30042             if (_res == NULL && PyErr_Occurred()) {
30043                 p->error_indicator = 1;
30044                 PyMem_Free(_children);
30045                 p->level--;
30046                 return NULL;
30047             }
30048             if (_n == _children_capacity) {
30049                 _children_capacity *= 2;
30050                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30051                 if (!_new_children) {
30052                     p->error_indicator = 1;
30053                     PyErr_NoMemory();
30054                     p->level--;
30055                     return NULL;
30056                 }
30057                 _children = _new_children;
30058             }
30059             _children[_n++] = _res;
30060             _mark = p->mark;
30061         }
30062         p->mark = _mark;
30063         D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ',
30064                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
30065     }
30066     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30067     if (!_seq) {
30068         PyMem_Free(_children);
30069         p->error_indicator = 1;
30070         PyErr_NoMemory();
30071         p->level--;
30072         return NULL;
30073     }
30074     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30075     PyMem_Free(_children);
30076     _PyPegen_insert_memo(p, _start_mark, _loop0_129_type, _seq);
30077     p->level--;
30078     return _seq;
30079 }
30080 
30081 // _gather_128: kwarg_or_double_starred _loop0_129
30082 static asdl_seq *
_gather_128_rule(Parser * p)30083 _gather_128_rule(Parser *p)
30084 {
30085     if (p->level++ == MAXSTACK) {
30086         p->error_indicator = 1;
30087         PyErr_NoMemory();
30088     }
30089     if (p->error_indicator) {
30090         p->level--;
30091         return NULL;
30092     }
30093     asdl_seq * _res = NULL;
30094     int _mark = p->mark;
30095     { // kwarg_or_double_starred _loop0_129
30096         if (p->error_indicator) {
30097             p->level--;
30098             return NULL;
30099         }
30100         D(fprintf(stderr, "%*c> _gather_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_129"));
30101         KeywordOrStarred* elem;
30102         asdl_seq * seq;
30103         if (
30104             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
30105             &&
30106             (seq = _loop0_129_rule(p))  // _loop0_129
30107         )
30108         {
30109             D(fprintf(stderr, "%*c+ _gather_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_129"));
30110             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30111             goto done;
30112         }
30113         p->mark = _mark;
30114         D(fprintf(stderr, "%*c%s _gather_128[%d-%d]: %s failed!\n", p->level, ' ',
30115                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_129"));
30116     }
30117     _res = NULL;
30118   done:
30119     p->level--;
30120     return _res;
30121 }
30122 
30123 // _loop0_131: ',' kwarg_or_starred
30124 static asdl_seq *
_loop0_131_rule(Parser * p)30125 _loop0_131_rule(Parser *p)
30126 {
30127     if (p->level++ == MAXSTACK) {
30128         p->error_indicator = 1;
30129         PyErr_NoMemory();
30130     }
30131     if (p->error_indicator) {
30132         p->level--;
30133         return NULL;
30134     }
30135     void *_res = NULL;
30136     int _mark = p->mark;
30137     int _start_mark = p->mark;
30138     void **_children = PyMem_Malloc(sizeof(void *));
30139     if (!_children) {
30140         p->error_indicator = 1;
30141         PyErr_NoMemory();
30142         p->level--;
30143         return NULL;
30144     }
30145     Py_ssize_t _children_capacity = 1;
30146     Py_ssize_t _n = 0;
30147     { // ',' kwarg_or_starred
30148         if (p->error_indicator) {
30149             p->level--;
30150             return NULL;
30151         }
30152         D(fprintf(stderr, "%*c> _loop0_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
30153         Token * _literal;
30154         KeywordOrStarred* elem;
30155         while (
30156             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30157             &&
30158             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
30159         )
30160         {
30161             _res = elem;
30162             if (_res == NULL && PyErr_Occurred()) {
30163                 p->error_indicator = 1;
30164                 PyMem_Free(_children);
30165                 p->level--;
30166                 return NULL;
30167             }
30168             if (_n == _children_capacity) {
30169                 _children_capacity *= 2;
30170                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30171                 if (!_new_children) {
30172                     p->error_indicator = 1;
30173                     PyErr_NoMemory();
30174                     p->level--;
30175                     return NULL;
30176                 }
30177                 _children = _new_children;
30178             }
30179             _children[_n++] = _res;
30180             _mark = p->mark;
30181         }
30182         p->mark = _mark;
30183         D(fprintf(stderr, "%*c%s _loop0_131[%d-%d]: %s failed!\n", p->level, ' ',
30184                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
30185     }
30186     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30187     if (!_seq) {
30188         PyMem_Free(_children);
30189         p->error_indicator = 1;
30190         PyErr_NoMemory();
30191         p->level--;
30192         return NULL;
30193     }
30194     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30195     PyMem_Free(_children);
30196     _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
30197     p->level--;
30198     return _seq;
30199 }
30200 
30201 // _gather_130: kwarg_or_starred _loop0_131
30202 static asdl_seq *
_gather_130_rule(Parser * p)30203 _gather_130_rule(Parser *p)
30204 {
30205     if (p->level++ == MAXSTACK) {
30206         p->error_indicator = 1;
30207         PyErr_NoMemory();
30208     }
30209     if (p->error_indicator) {
30210         p->level--;
30211         return NULL;
30212     }
30213     asdl_seq * _res = NULL;
30214     int _mark = p->mark;
30215     { // kwarg_or_starred _loop0_131
30216         if (p->error_indicator) {
30217             p->level--;
30218             return NULL;
30219         }
30220         D(fprintf(stderr, "%*c> _gather_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_131"));
30221         KeywordOrStarred* elem;
30222         asdl_seq * seq;
30223         if (
30224             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
30225             &&
30226             (seq = _loop0_131_rule(p))  // _loop0_131
30227         )
30228         {
30229             D(fprintf(stderr, "%*c+ _gather_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_131"));
30230             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30231             goto done;
30232         }
30233         p->mark = _mark;
30234         D(fprintf(stderr, "%*c%s _gather_130[%d-%d]: %s failed!\n", p->level, ' ',
30235                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_131"));
30236     }
30237     _res = NULL;
30238   done:
30239     p->level--;
30240     return _res;
30241 }
30242 
30243 // _loop0_133: ',' kwarg_or_double_starred
30244 static asdl_seq *
_loop0_133_rule(Parser * p)30245 _loop0_133_rule(Parser *p)
30246 {
30247     if (p->level++ == MAXSTACK) {
30248         p->error_indicator = 1;
30249         PyErr_NoMemory();
30250     }
30251     if (p->error_indicator) {
30252         p->level--;
30253         return NULL;
30254     }
30255     void *_res = NULL;
30256     int _mark = p->mark;
30257     int _start_mark = p->mark;
30258     void **_children = PyMem_Malloc(sizeof(void *));
30259     if (!_children) {
30260         p->error_indicator = 1;
30261         PyErr_NoMemory();
30262         p->level--;
30263         return NULL;
30264     }
30265     Py_ssize_t _children_capacity = 1;
30266     Py_ssize_t _n = 0;
30267     { // ',' kwarg_or_double_starred
30268         if (p->error_indicator) {
30269             p->level--;
30270             return NULL;
30271         }
30272         D(fprintf(stderr, "%*c> _loop0_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
30273         Token * _literal;
30274         KeywordOrStarred* elem;
30275         while (
30276             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30277             &&
30278             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
30279         )
30280         {
30281             _res = elem;
30282             if (_res == NULL && PyErr_Occurred()) {
30283                 p->error_indicator = 1;
30284                 PyMem_Free(_children);
30285                 p->level--;
30286                 return NULL;
30287             }
30288             if (_n == _children_capacity) {
30289                 _children_capacity *= 2;
30290                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30291                 if (!_new_children) {
30292                     p->error_indicator = 1;
30293                     PyErr_NoMemory();
30294                     p->level--;
30295                     return NULL;
30296                 }
30297                 _children = _new_children;
30298             }
30299             _children[_n++] = _res;
30300             _mark = p->mark;
30301         }
30302         p->mark = _mark;
30303         D(fprintf(stderr, "%*c%s _loop0_133[%d-%d]: %s failed!\n", p->level, ' ',
30304                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
30305     }
30306     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30307     if (!_seq) {
30308         PyMem_Free(_children);
30309         p->error_indicator = 1;
30310         PyErr_NoMemory();
30311         p->level--;
30312         return NULL;
30313     }
30314     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30315     PyMem_Free(_children);
30316     _PyPegen_insert_memo(p, _start_mark, _loop0_133_type, _seq);
30317     p->level--;
30318     return _seq;
30319 }
30320 
30321 // _gather_132: kwarg_or_double_starred _loop0_133
30322 static asdl_seq *
_gather_132_rule(Parser * p)30323 _gather_132_rule(Parser *p)
30324 {
30325     if (p->level++ == MAXSTACK) {
30326         p->error_indicator = 1;
30327         PyErr_NoMemory();
30328     }
30329     if (p->error_indicator) {
30330         p->level--;
30331         return NULL;
30332     }
30333     asdl_seq * _res = NULL;
30334     int _mark = p->mark;
30335     { // kwarg_or_double_starred _loop0_133
30336         if (p->error_indicator) {
30337             p->level--;
30338             return NULL;
30339         }
30340         D(fprintf(stderr, "%*c> _gather_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_133"));
30341         KeywordOrStarred* elem;
30342         asdl_seq * seq;
30343         if (
30344             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
30345             &&
30346             (seq = _loop0_133_rule(p))  // _loop0_133
30347         )
30348         {
30349             D(fprintf(stderr, "%*c+ _gather_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_133"));
30350             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30351             goto done;
30352         }
30353         p->mark = _mark;
30354         D(fprintf(stderr, "%*c%s _gather_132[%d-%d]: %s failed!\n", p->level, ' ',
30355                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_133"));
30356     }
30357     _res = NULL;
30358   done:
30359     p->level--;
30360     return _res;
30361 }
30362 
30363 // _loop0_134: (',' star_target)
30364 static asdl_seq *
_loop0_134_rule(Parser * p)30365 _loop0_134_rule(Parser *p)
30366 {
30367     if (p->level++ == MAXSTACK) {
30368         p->error_indicator = 1;
30369         PyErr_NoMemory();
30370     }
30371     if (p->error_indicator) {
30372         p->level--;
30373         return NULL;
30374     }
30375     void *_res = NULL;
30376     int _mark = p->mark;
30377     int _start_mark = p->mark;
30378     void **_children = PyMem_Malloc(sizeof(void *));
30379     if (!_children) {
30380         p->error_indicator = 1;
30381         PyErr_NoMemory();
30382         p->level--;
30383         return NULL;
30384     }
30385     Py_ssize_t _children_capacity = 1;
30386     Py_ssize_t _n = 0;
30387     { // (',' star_target)
30388         if (p->error_indicator) {
30389             p->level--;
30390             return NULL;
30391         }
30392         D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
30393         void *_tmp_192_var;
30394         while (
30395             (_tmp_192_var = _tmp_192_rule(p))  // ',' star_target
30396         )
30397         {
30398             _res = _tmp_192_var;
30399             if (_n == _children_capacity) {
30400                 _children_capacity *= 2;
30401                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30402                 if (!_new_children) {
30403                     p->error_indicator = 1;
30404                     PyErr_NoMemory();
30405                     p->level--;
30406                     return NULL;
30407                 }
30408                 _children = _new_children;
30409             }
30410             _children[_n++] = _res;
30411             _mark = p->mark;
30412         }
30413         p->mark = _mark;
30414         D(fprintf(stderr, "%*c%s _loop0_134[%d-%d]: %s failed!\n", p->level, ' ',
30415                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
30416     }
30417     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30418     if (!_seq) {
30419         PyMem_Free(_children);
30420         p->error_indicator = 1;
30421         PyErr_NoMemory();
30422         p->level--;
30423         return NULL;
30424     }
30425     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30426     PyMem_Free(_children);
30427     _PyPegen_insert_memo(p, _start_mark, _loop0_134_type, _seq);
30428     p->level--;
30429     return _seq;
30430 }
30431 
30432 // _loop0_136: ',' star_target
30433 static asdl_seq *
_loop0_136_rule(Parser * p)30434 _loop0_136_rule(Parser *p)
30435 {
30436     if (p->level++ == MAXSTACK) {
30437         p->error_indicator = 1;
30438         PyErr_NoMemory();
30439     }
30440     if (p->error_indicator) {
30441         p->level--;
30442         return NULL;
30443     }
30444     void *_res = NULL;
30445     int _mark = p->mark;
30446     int _start_mark = p->mark;
30447     void **_children = PyMem_Malloc(sizeof(void *));
30448     if (!_children) {
30449         p->error_indicator = 1;
30450         PyErr_NoMemory();
30451         p->level--;
30452         return NULL;
30453     }
30454     Py_ssize_t _children_capacity = 1;
30455     Py_ssize_t _n = 0;
30456     { // ',' star_target
30457         if (p->error_indicator) {
30458             p->level--;
30459             return NULL;
30460         }
30461         D(fprintf(stderr, "%*c> _loop0_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
30462         Token * _literal;
30463         expr_ty elem;
30464         while (
30465             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30466             &&
30467             (elem = star_target_rule(p))  // star_target
30468         )
30469         {
30470             _res = elem;
30471             if (_res == NULL && PyErr_Occurred()) {
30472                 p->error_indicator = 1;
30473                 PyMem_Free(_children);
30474                 p->level--;
30475                 return NULL;
30476             }
30477             if (_n == _children_capacity) {
30478                 _children_capacity *= 2;
30479                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30480                 if (!_new_children) {
30481                     p->error_indicator = 1;
30482                     PyErr_NoMemory();
30483                     p->level--;
30484                     return NULL;
30485                 }
30486                 _children = _new_children;
30487             }
30488             _children[_n++] = _res;
30489             _mark = p->mark;
30490         }
30491         p->mark = _mark;
30492         D(fprintf(stderr, "%*c%s _loop0_136[%d-%d]: %s failed!\n", p->level, ' ',
30493                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
30494     }
30495     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30496     if (!_seq) {
30497         PyMem_Free(_children);
30498         p->error_indicator = 1;
30499         PyErr_NoMemory();
30500         p->level--;
30501         return NULL;
30502     }
30503     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30504     PyMem_Free(_children);
30505     _PyPegen_insert_memo(p, _start_mark, _loop0_136_type, _seq);
30506     p->level--;
30507     return _seq;
30508 }
30509 
30510 // _gather_135: star_target _loop0_136
30511 static asdl_seq *
_gather_135_rule(Parser * p)30512 _gather_135_rule(Parser *p)
30513 {
30514     if (p->level++ == MAXSTACK) {
30515         p->error_indicator = 1;
30516         PyErr_NoMemory();
30517     }
30518     if (p->error_indicator) {
30519         p->level--;
30520         return NULL;
30521     }
30522     asdl_seq * _res = NULL;
30523     int _mark = p->mark;
30524     { // star_target _loop0_136
30525         if (p->error_indicator) {
30526             p->level--;
30527             return NULL;
30528         }
30529         D(fprintf(stderr, "%*c> _gather_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_136"));
30530         expr_ty elem;
30531         asdl_seq * seq;
30532         if (
30533             (elem = star_target_rule(p))  // star_target
30534             &&
30535             (seq = _loop0_136_rule(p))  // _loop0_136
30536         )
30537         {
30538             D(fprintf(stderr, "%*c+ _gather_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_136"));
30539             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30540             goto done;
30541         }
30542         p->mark = _mark;
30543         D(fprintf(stderr, "%*c%s _gather_135[%d-%d]: %s failed!\n", p->level, ' ',
30544                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_136"));
30545     }
30546     _res = NULL;
30547   done:
30548     p->level--;
30549     return _res;
30550 }
30551 
30552 // _loop1_137: (',' star_target)
30553 static asdl_seq *
_loop1_137_rule(Parser * p)30554 _loop1_137_rule(Parser *p)
30555 {
30556     if (p->level++ == MAXSTACK) {
30557         p->error_indicator = 1;
30558         PyErr_NoMemory();
30559     }
30560     if (p->error_indicator) {
30561         p->level--;
30562         return NULL;
30563     }
30564     void *_res = NULL;
30565     int _mark = p->mark;
30566     int _start_mark = p->mark;
30567     void **_children = PyMem_Malloc(sizeof(void *));
30568     if (!_children) {
30569         p->error_indicator = 1;
30570         PyErr_NoMemory();
30571         p->level--;
30572         return NULL;
30573     }
30574     Py_ssize_t _children_capacity = 1;
30575     Py_ssize_t _n = 0;
30576     { // (',' star_target)
30577         if (p->error_indicator) {
30578             p->level--;
30579             return NULL;
30580         }
30581         D(fprintf(stderr, "%*c> _loop1_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
30582         void *_tmp_193_var;
30583         while (
30584             (_tmp_193_var = _tmp_193_rule(p))  // ',' star_target
30585         )
30586         {
30587             _res = _tmp_193_var;
30588             if (_n == _children_capacity) {
30589                 _children_capacity *= 2;
30590                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30591                 if (!_new_children) {
30592                     p->error_indicator = 1;
30593                     PyErr_NoMemory();
30594                     p->level--;
30595                     return NULL;
30596                 }
30597                 _children = _new_children;
30598             }
30599             _children[_n++] = _res;
30600             _mark = p->mark;
30601         }
30602         p->mark = _mark;
30603         D(fprintf(stderr, "%*c%s _loop1_137[%d-%d]: %s failed!\n", p->level, ' ',
30604                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
30605     }
30606     if (_n == 0 || p->error_indicator) {
30607         PyMem_Free(_children);
30608         p->level--;
30609         return NULL;
30610     }
30611     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30612     if (!_seq) {
30613         PyMem_Free(_children);
30614         p->error_indicator = 1;
30615         PyErr_NoMemory();
30616         p->level--;
30617         return NULL;
30618     }
30619     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30620     PyMem_Free(_children);
30621     _PyPegen_insert_memo(p, _start_mark, _loop1_137_type, _seq);
30622     p->level--;
30623     return _seq;
30624 }
30625 
30626 // _tmp_138: !'*' star_target
30627 static void *
_tmp_138_rule(Parser * p)30628 _tmp_138_rule(Parser *p)
30629 {
30630     if (p->level++ == MAXSTACK) {
30631         p->error_indicator = 1;
30632         PyErr_NoMemory();
30633     }
30634     if (p->error_indicator) {
30635         p->level--;
30636         return NULL;
30637     }
30638     void * _res = NULL;
30639     int _mark = p->mark;
30640     { // !'*' star_target
30641         if (p->error_indicator) {
30642             p->level--;
30643             return NULL;
30644         }
30645         D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
30646         expr_ty star_target_var;
30647         if (
30648             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
30649             &&
30650             (star_target_var = star_target_rule(p))  // star_target
30651         )
30652         {
30653             D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
30654             _res = star_target_var;
30655             goto done;
30656         }
30657         p->mark = _mark;
30658         D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ',
30659                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
30660     }
30661     _res = NULL;
30662   done:
30663     p->level--;
30664     return _res;
30665 }
30666 
30667 // _loop0_140: ',' del_target
30668 static asdl_seq *
_loop0_140_rule(Parser * p)30669 _loop0_140_rule(Parser *p)
30670 {
30671     if (p->level++ == MAXSTACK) {
30672         p->error_indicator = 1;
30673         PyErr_NoMemory();
30674     }
30675     if (p->error_indicator) {
30676         p->level--;
30677         return NULL;
30678     }
30679     void *_res = NULL;
30680     int _mark = p->mark;
30681     int _start_mark = p->mark;
30682     void **_children = PyMem_Malloc(sizeof(void *));
30683     if (!_children) {
30684         p->error_indicator = 1;
30685         PyErr_NoMemory();
30686         p->level--;
30687         return NULL;
30688     }
30689     Py_ssize_t _children_capacity = 1;
30690     Py_ssize_t _n = 0;
30691     { // ',' del_target
30692         if (p->error_indicator) {
30693             p->level--;
30694             return NULL;
30695         }
30696         D(fprintf(stderr, "%*c> _loop0_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
30697         Token * _literal;
30698         expr_ty elem;
30699         while (
30700             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30701             &&
30702             (elem = del_target_rule(p))  // del_target
30703         )
30704         {
30705             _res = elem;
30706             if (_res == NULL && PyErr_Occurred()) {
30707                 p->error_indicator = 1;
30708                 PyMem_Free(_children);
30709                 p->level--;
30710                 return NULL;
30711             }
30712             if (_n == _children_capacity) {
30713                 _children_capacity *= 2;
30714                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30715                 if (!_new_children) {
30716                     p->error_indicator = 1;
30717                     PyErr_NoMemory();
30718                     p->level--;
30719                     return NULL;
30720                 }
30721                 _children = _new_children;
30722             }
30723             _children[_n++] = _res;
30724             _mark = p->mark;
30725         }
30726         p->mark = _mark;
30727         D(fprintf(stderr, "%*c%s _loop0_140[%d-%d]: %s failed!\n", p->level, ' ',
30728                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
30729     }
30730     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30731     if (!_seq) {
30732         PyMem_Free(_children);
30733         p->error_indicator = 1;
30734         PyErr_NoMemory();
30735         p->level--;
30736         return NULL;
30737     }
30738     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30739     PyMem_Free(_children);
30740     _PyPegen_insert_memo(p, _start_mark, _loop0_140_type, _seq);
30741     p->level--;
30742     return _seq;
30743 }
30744 
30745 // _gather_139: del_target _loop0_140
30746 static asdl_seq *
_gather_139_rule(Parser * p)30747 _gather_139_rule(Parser *p)
30748 {
30749     if (p->level++ == MAXSTACK) {
30750         p->error_indicator = 1;
30751         PyErr_NoMemory();
30752     }
30753     if (p->error_indicator) {
30754         p->level--;
30755         return NULL;
30756     }
30757     asdl_seq * _res = NULL;
30758     int _mark = p->mark;
30759     { // del_target _loop0_140
30760         if (p->error_indicator) {
30761             p->level--;
30762             return NULL;
30763         }
30764         D(fprintf(stderr, "%*c> _gather_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_140"));
30765         expr_ty elem;
30766         asdl_seq * seq;
30767         if (
30768             (elem = del_target_rule(p))  // del_target
30769             &&
30770             (seq = _loop0_140_rule(p))  // _loop0_140
30771         )
30772         {
30773             D(fprintf(stderr, "%*c+ _gather_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_140"));
30774             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30775             goto done;
30776         }
30777         p->mark = _mark;
30778         D(fprintf(stderr, "%*c%s _gather_139[%d-%d]: %s failed!\n", p->level, ' ',
30779                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_140"));
30780     }
30781     _res = NULL;
30782   done:
30783     p->level--;
30784     return _res;
30785 }
30786 
30787 // _tmp_141: args | expression for_if_clauses
30788 static void *
_tmp_141_rule(Parser * p)30789 _tmp_141_rule(Parser *p)
30790 {
30791     if (p->level++ == MAXSTACK) {
30792         p->error_indicator = 1;
30793         PyErr_NoMemory();
30794     }
30795     if (p->error_indicator) {
30796         p->level--;
30797         return NULL;
30798     }
30799     void * _res = NULL;
30800     int _mark = p->mark;
30801     { // args
30802         if (p->error_indicator) {
30803             p->level--;
30804             return NULL;
30805         }
30806         D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
30807         expr_ty args_var;
30808         if (
30809             (args_var = args_rule(p))  // args
30810         )
30811         {
30812             D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
30813             _res = args_var;
30814             goto done;
30815         }
30816         p->mark = _mark;
30817         D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ',
30818                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
30819     }
30820     { // expression for_if_clauses
30821         if (p->error_indicator) {
30822             p->level--;
30823             return NULL;
30824         }
30825         D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
30826         expr_ty expression_var;
30827         asdl_comprehension_seq* for_if_clauses_var;
30828         if (
30829             (expression_var = expression_rule(p))  // expression
30830             &&
30831             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
30832         )
30833         {
30834             D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
30835             _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
30836             goto done;
30837         }
30838         p->mark = _mark;
30839         D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ',
30840                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
30841     }
30842     _res = NULL;
30843   done:
30844     p->level--;
30845     return _res;
30846 }
30847 
30848 // _tmp_142: 'True' | 'False' | 'None'
30849 static void *
_tmp_142_rule(Parser * p)30850 _tmp_142_rule(Parser *p)
30851 {
30852     if (p->level++ == MAXSTACK) {
30853         p->error_indicator = 1;
30854         PyErr_NoMemory();
30855     }
30856     if (p->error_indicator) {
30857         p->level--;
30858         return NULL;
30859     }
30860     void * _res = NULL;
30861     int _mark = p->mark;
30862     { // 'True'
30863         if (p->error_indicator) {
30864             p->level--;
30865             return NULL;
30866         }
30867         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
30868         Token * _keyword;
30869         if (
30870             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
30871         )
30872         {
30873             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
30874             _res = _keyword;
30875             goto done;
30876         }
30877         p->mark = _mark;
30878         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
30879                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
30880     }
30881     { // 'False'
30882         if (p->error_indicator) {
30883             p->level--;
30884             return NULL;
30885         }
30886         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
30887         Token * _keyword;
30888         if (
30889             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
30890         )
30891         {
30892             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
30893             _res = _keyword;
30894             goto done;
30895         }
30896         p->mark = _mark;
30897         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
30898                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
30899     }
30900     { // 'None'
30901         if (p->error_indicator) {
30902             p->level--;
30903             return NULL;
30904         }
30905         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
30906         Token * _keyword;
30907         if (
30908             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
30909         )
30910         {
30911             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
30912             _res = _keyword;
30913             goto done;
30914         }
30915         p->mark = _mark;
30916         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
30917                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
30918     }
30919     _res = NULL;
30920   done:
30921     p->level--;
30922     return _res;
30923 }
30924 
30925 // _tmp_143: NAME '='
30926 static void *
_tmp_143_rule(Parser * p)30927 _tmp_143_rule(Parser *p)
30928 {
30929     if (p->level++ == MAXSTACK) {
30930         p->error_indicator = 1;
30931         PyErr_NoMemory();
30932     }
30933     if (p->error_indicator) {
30934         p->level--;
30935         return NULL;
30936     }
30937     void * _res = NULL;
30938     int _mark = p->mark;
30939     { // NAME '='
30940         if (p->error_indicator) {
30941             p->level--;
30942             return NULL;
30943         }
30944         D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
30945         Token * _literal;
30946         expr_ty name_var;
30947         if (
30948             (name_var = _PyPegen_name_token(p))  // NAME
30949             &&
30950             (_literal = _PyPegen_expect_token(p, 22))  // token='='
30951         )
30952         {
30953             D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
30954             _res = _PyPegen_dummy_name(p, name_var, _literal);
30955             goto done;
30956         }
30957         p->mark = _mark;
30958         D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
30959                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
30960     }
30961     _res = NULL;
30962   done:
30963     p->level--;
30964     return _res;
30965 }
30966 
30967 // _tmp_144: NAME STRING | SOFT_KEYWORD
30968 static void *
_tmp_144_rule(Parser * p)30969 _tmp_144_rule(Parser *p)
30970 {
30971     if (p->level++ == MAXSTACK) {
30972         p->error_indicator = 1;
30973         PyErr_NoMemory();
30974     }
30975     if (p->error_indicator) {
30976         p->level--;
30977         return NULL;
30978     }
30979     void * _res = NULL;
30980     int _mark = p->mark;
30981     { // NAME STRING
30982         if (p->error_indicator) {
30983             p->level--;
30984             return NULL;
30985         }
30986         D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
30987         expr_ty name_var;
30988         expr_ty string_var;
30989         if (
30990             (name_var = _PyPegen_name_token(p))  // NAME
30991             &&
30992             (string_var = _PyPegen_string_token(p))  // STRING
30993         )
30994         {
30995             D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
30996             _res = _PyPegen_dummy_name(p, name_var, string_var);
30997             goto done;
30998         }
30999         p->mark = _mark;
31000         D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
31001                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
31002     }
31003     { // SOFT_KEYWORD
31004         if (p->error_indicator) {
31005             p->level--;
31006             return NULL;
31007         }
31008         D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
31009         expr_ty soft_keyword_var;
31010         if (
31011             (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
31012         )
31013         {
31014             D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
31015             _res = soft_keyword_var;
31016             goto done;
31017         }
31018         p->mark = _mark;
31019         D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
31020                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
31021     }
31022     _res = NULL;
31023   done:
31024     p->level--;
31025     return _res;
31026 }
31027 
31028 // _tmp_145: 'else' | ':'
31029 static void *
_tmp_145_rule(Parser * p)31030 _tmp_145_rule(Parser *p)
31031 {
31032     if (p->level++ == MAXSTACK) {
31033         p->error_indicator = 1;
31034         PyErr_NoMemory();
31035     }
31036     if (p->error_indicator) {
31037         p->level--;
31038         return NULL;
31039     }
31040     void * _res = NULL;
31041     int _mark = p->mark;
31042     { // 'else'
31043         if (p->error_indicator) {
31044             p->level--;
31045             return NULL;
31046         }
31047         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
31048         Token * _keyword;
31049         if (
31050             (_keyword = _PyPegen_expect_token(p, 516))  // token='else'
31051         )
31052         {
31053             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
31054             _res = _keyword;
31055             goto done;
31056         }
31057         p->mark = _mark;
31058         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
31059                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'"));
31060     }
31061     { // ':'
31062         if (p->error_indicator) {
31063             p->level--;
31064             return NULL;
31065         }
31066         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
31067         Token * _literal;
31068         if (
31069             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31070         )
31071         {
31072             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
31073             _res = _literal;
31074             goto done;
31075         }
31076         p->mark = _mark;
31077         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
31078                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
31079     }
31080     _res = NULL;
31081   done:
31082     p->level--;
31083     return _res;
31084 }
31085 
31086 // _tmp_146: '=' | ':='
31087 static void *
_tmp_146_rule(Parser * p)31088 _tmp_146_rule(Parser *p)
31089 {
31090     if (p->level++ == MAXSTACK) {
31091         p->error_indicator = 1;
31092         PyErr_NoMemory();
31093     }
31094     if (p->error_indicator) {
31095         p->level--;
31096         return NULL;
31097     }
31098     void * _res = NULL;
31099     int _mark = p->mark;
31100     { // '='
31101         if (p->error_indicator) {
31102             p->level--;
31103             return NULL;
31104         }
31105         D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
31106         Token * _literal;
31107         if (
31108             (_literal = _PyPegen_expect_token(p, 22))  // token='='
31109         )
31110         {
31111             D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
31112             _res = _literal;
31113             goto done;
31114         }
31115         p->mark = _mark;
31116         D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
31117                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
31118     }
31119     { // ':='
31120         if (p->error_indicator) {
31121             p->level--;
31122             return NULL;
31123         }
31124         D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
31125         Token * _literal;
31126         if (
31127             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
31128         )
31129         {
31130             D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
31131             _res = _literal;
31132             goto done;
31133         }
31134         p->mark = _mark;
31135         D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
31136                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
31137     }
31138     _res = NULL;
31139   done:
31140     p->level--;
31141     return _res;
31142 }
31143 
31144 // _tmp_147: list | tuple | genexp | 'True' | 'None' | 'False'
31145 static void *
_tmp_147_rule(Parser * p)31146 _tmp_147_rule(Parser *p)
31147 {
31148     if (p->level++ == MAXSTACK) {
31149         p->error_indicator = 1;
31150         PyErr_NoMemory();
31151     }
31152     if (p->error_indicator) {
31153         p->level--;
31154         return NULL;
31155     }
31156     void * _res = NULL;
31157     int _mark = p->mark;
31158     { // list
31159         if (p->error_indicator) {
31160             p->level--;
31161             return NULL;
31162         }
31163         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
31164         expr_ty list_var;
31165         if (
31166             (list_var = list_rule(p))  // list
31167         )
31168         {
31169             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
31170             _res = list_var;
31171             goto done;
31172         }
31173         p->mark = _mark;
31174         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
31175                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
31176     }
31177     { // tuple
31178         if (p->error_indicator) {
31179             p->level--;
31180             return NULL;
31181         }
31182         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
31183         expr_ty tuple_var;
31184         if (
31185             (tuple_var = tuple_rule(p))  // tuple
31186         )
31187         {
31188             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
31189             _res = tuple_var;
31190             goto done;
31191         }
31192         p->mark = _mark;
31193         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
31194                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
31195     }
31196     { // genexp
31197         if (p->error_indicator) {
31198             p->level--;
31199             return NULL;
31200         }
31201         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
31202         expr_ty genexp_var;
31203         if (
31204             (genexp_var = genexp_rule(p))  // genexp
31205         )
31206         {
31207             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
31208             _res = genexp_var;
31209             goto done;
31210         }
31211         p->mark = _mark;
31212         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
31213                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
31214     }
31215     { // 'True'
31216         if (p->error_indicator) {
31217             p->level--;
31218             return NULL;
31219         }
31220         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
31221         Token * _keyword;
31222         if (
31223             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
31224         )
31225         {
31226             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
31227             _res = _keyword;
31228             goto done;
31229         }
31230         p->mark = _mark;
31231         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
31232                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
31233     }
31234     { // 'None'
31235         if (p->error_indicator) {
31236             p->level--;
31237             return NULL;
31238         }
31239         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
31240         Token * _keyword;
31241         if (
31242             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
31243         )
31244         {
31245             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
31246             _res = _keyword;
31247             goto done;
31248         }
31249         p->mark = _mark;
31250         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
31251                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
31252     }
31253     { // 'False'
31254         if (p->error_indicator) {
31255             p->level--;
31256             return NULL;
31257         }
31258         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
31259         Token * _keyword;
31260         if (
31261             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
31262         )
31263         {
31264             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
31265             _res = _keyword;
31266             goto done;
31267         }
31268         p->mark = _mark;
31269         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
31270                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
31271     }
31272     _res = NULL;
31273   done:
31274     p->level--;
31275     return _res;
31276 }
31277 
31278 // _tmp_148: '=' | ':='
31279 static void *
_tmp_148_rule(Parser * p)31280 _tmp_148_rule(Parser *p)
31281 {
31282     if (p->level++ == MAXSTACK) {
31283         p->error_indicator = 1;
31284         PyErr_NoMemory();
31285     }
31286     if (p->error_indicator) {
31287         p->level--;
31288         return NULL;
31289     }
31290     void * _res = NULL;
31291     int _mark = p->mark;
31292     { // '='
31293         if (p->error_indicator) {
31294             p->level--;
31295             return NULL;
31296         }
31297         D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
31298         Token * _literal;
31299         if (
31300             (_literal = _PyPegen_expect_token(p, 22))  // token='='
31301         )
31302         {
31303             D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
31304             _res = _literal;
31305             goto done;
31306         }
31307         p->mark = _mark;
31308         D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
31309                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
31310     }
31311     { // ':='
31312         if (p->error_indicator) {
31313             p->level--;
31314             return NULL;
31315         }
31316         D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
31317         Token * _literal;
31318         if (
31319             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
31320         )
31321         {
31322             D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
31323             _res = _literal;
31324             goto done;
31325         }
31326         p->mark = _mark;
31327         D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
31328                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
31329     }
31330     _res = NULL;
31331   done:
31332     p->level--;
31333     return _res;
31334 }
31335 
31336 // _loop0_149: star_named_expressions
31337 static asdl_seq *
_loop0_149_rule(Parser * p)31338 _loop0_149_rule(Parser *p)
31339 {
31340     if (p->level++ == MAXSTACK) {
31341         p->error_indicator = 1;
31342         PyErr_NoMemory();
31343     }
31344     if (p->error_indicator) {
31345         p->level--;
31346         return NULL;
31347     }
31348     void *_res = NULL;
31349     int _mark = p->mark;
31350     int _start_mark = p->mark;
31351     void **_children = PyMem_Malloc(sizeof(void *));
31352     if (!_children) {
31353         p->error_indicator = 1;
31354         PyErr_NoMemory();
31355         p->level--;
31356         return NULL;
31357     }
31358     Py_ssize_t _children_capacity = 1;
31359     Py_ssize_t _n = 0;
31360     { // star_named_expressions
31361         if (p->error_indicator) {
31362             p->level--;
31363             return NULL;
31364         }
31365         D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
31366         asdl_expr_seq* star_named_expressions_var;
31367         while (
31368             (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
31369         )
31370         {
31371             _res = star_named_expressions_var;
31372             if (_n == _children_capacity) {
31373                 _children_capacity *= 2;
31374                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31375                 if (!_new_children) {
31376                     p->error_indicator = 1;
31377                     PyErr_NoMemory();
31378                     p->level--;
31379                     return NULL;
31380                 }
31381                 _children = _new_children;
31382             }
31383             _children[_n++] = _res;
31384             _mark = p->mark;
31385         }
31386         p->mark = _mark;
31387         D(fprintf(stderr, "%*c%s _loop0_149[%d-%d]: %s failed!\n", p->level, ' ',
31388                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
31389     }
31390     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31391     if (!_seq) {
31392         PyMem_Free(_children);
31393         p->error_indicator = 1;
31394         PyErr_NoMemory();
31395         p->level--;
31396         return NULL;
31397     }
31398     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31399     PyMem_Free(_children);
31400     _PyPegen_insert_memo(p, _start_mark, _loop0_149_type, _seq);
31401     p->level--;
31402     return _seq;
31403 }
31404 
31405 // _loop0_150: (star_targets '=')
31406 static asdl_seq *
_loop0_150_rule(Parser * p)31407 _loop0_150_rule(Parser *p)
31408 {
31409     if (p->level++ == MAXSTACK) {
31410         p->error_indicator = 1;
31411         PyErr_NoMemory();
31412     }
31413     if (p->error_indicator) {
31414         p->level--;
31415         return NULL;
31416     }
31417     void *_res = NULL;
31418     int _mark = p->mark;
31419     int _start_mark = p->mark;
31420     void **_children = PyMem_Malloc(sizeof(void *));
31421     if (!_children) {
31422         p->error_indicator = 1;
31423         PyErr_NoMemory();
31424         p->level--;
31425         return NULL;
31426     }
31427     Py_ssize_t _children_capacity = 1;
31428     Py_ssize_t _n = 0;
31429     { // (star_targets '=')
31430         if (p->error_indicator) {
31431             p->level--;
31432             return NULL;
31433         }
31434         D(fprintf(stderr, "%*c> _loop0_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
31435         void *_tmp_194_var;
31436         while (
31437             (_tmp_194_var = _tmp_194_rule(p))  // star_targets '='
31438         )
31439         {
31440             _res = _tmp_194_var;
31441             if (_n == _children_capacity) {
31442                 _children_capacity *= 2;
31443                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31444                 if (!_new_children) {
31445                     p->error_indicator = 1;
31446                     PyErr_NoMemory();
31447                     p->level--;
31448                     return NULL;
31449                 }
31450                 _children = _new_children;
31451             }
31452             _children[_n++] = _res;
31453             _mark = p->mark;
31454         }
31455         p->mark = _mark;
31456         D(fprintf(stderr, "%*c%s _loop0_150[%d-%d]: %s failed!\n", p->level, ' ',
31457                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
31458     }
31459     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31460     if (!_seq) {
31461         PyMem_Free(_children);
31462         p->error_indicator = 1;
31463         PyErr_NoMemory();
31464         p->level--;
31465         return NULL;
31466     }
31467     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31468     PyMem_Free(_children);
31469     _PyPegen_insert_memo(p, _start_mark, _loop0_150_type, _seq);
31470     p->level--;
31471     return _seq;
31472 }
31473 
31474 // _loop0_151: (star_targets '=')
31475 static asdl_seq *
_loop0_151_rule(Parser * p)31476 _loop0_151_rule(Parser *p)
31477 {
31478     if (p->level++ == MAXSTACK) {
31479         p->error_indicator = 1;
31480         PyErr_NoMemory();
31481     }
31482     if (p->error_indicator) {
31483         p->level--;
31484         return NULL;
31485     }
31486     void *_res = NULL;
31487     int _mark = p->mark;
31488     int _start_mark = p->mark;
31489     void **_children = PyMem_Malloc(sizeof(void *));
31490     if (!_children) {
31491         p->error_indicator = 1;
31492         PyErr_NoMemory();
31493         p->level--;
31494         return NULL;
31495     }
31496     Py_ssize_t _children_capacity = 1;
31497     Py_ssize_t _n = 0;
31498     { // (star_targets '=')
31499         if (p->error_indicator) {
31500             p->level--;
31501             return NULL;
31502         }
31503         D(fprintf(stderr, "%*c> _loop0_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
31504         void *_tmp_195_var;
31505         while (
31506             (_tmp_195_var = _tmp_195_rule(p))  // star_targets '='
31507         )
31508         {
31509             _res = _tmp_195_var;
31510             if (_n == _children_capacity) {
31511                 _children_capacity *= 2;
31512                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31513                 if (!_new_children) {
31514                     p->error_indicator = 1;
31515                     PyErr_NoMemory();
31516                     p->level--;
31517                     return NULL;
31518                 }
31519                 _children = _new_children;
31520             }
31521             _children[_n++] = _res;
31522             _mark = p->mark;
31523         }
31524         p->mark = _mark;
31525         D(fprintf(stderr, "%*c%s _loop0_151[%d-%d]: %s failed!\n", p->level, ' ',
31526                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
31527     }
31528     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31529     if (!_seq) {
31530         PyMem_Free(_children);
31531         p->error_indicator = 1;
31532         PyErr_NoMemory();
31533         p->level--;
31534         return NULL;
31535     }
31536     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31537     PyMem_Free(_children);
31538     _PyPegen_insert_memo(p, _start_mark, _loop0_151_type, _seq);
31539     p->level--;
31540     return _seq;
31541 }
31542 
31543 // _tmp_152: yield_expr | star_expressions
31544 static void *
_tmp_152_rule(Parser * p)31545 _tmp_152_rule(Parser *p)
31546 {
31547     if (p->level++ == MAXSTACK) {
31548         p->error_indicator = 1;
31549         PyErr_NoMemory();
31550     }
31551     if (p->error_indicator) {
31552         p->level--;
31553         return NULL;
31554     }
31555     void * _res = NULL;
31556     int _mark = p->mark;
31557     { // yield_expr
31558         if (p->error_indicator) {
31559             p->level--;
31560             return NULL;
31561         }
31562         D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31563         expr_ty yield_expr_var;
31564         if (
31565             (yield_expr_var = yield_expr_rule(p))  // yield_expr
31566         )
31567         {
31568             D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31569             _res = yield_expr_var;
31570             goto done;
31571         }
31572         p->mark = _mark;
31573         D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
31574                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
31575     }
31576     { // star_expressions
31577         if (p->error_indicator) {
31578             p->level--;
31579             return NULL;
31580         }
31581         D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
31582         expr_ty star_expressions_var;
31583         if (
31584             (star_expressions_var = star_expressions_rule(p))  // star_expressions
31585         )
31586         {
31587             D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
31588             _res = star_expressions_var;
31589             goto done;
31590         }
31591         p->mark = _mark;
31592         D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
31593                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
31594     }
31595     _res = NULL;
31596   done:
31597     p->level--;
31598     return _res;
31599 }
31600 
31601 // _tmp_153: '[' | '(' | '{'
31602 static void *
_tmp_153_rule(Parser * p)31603 _tmp_153_rule(Parser *p)
31604 {
31605     if (p->level++ == MAXSTACK) {
31606         p->error_indicator = 1;
31607         PyErr_NoMemory();
31608     }
31609     if (p->error_indicator) {
31610         p->level--;
31611         return NULL;
31612     }
31613     void * _res = NULL;
31614     int _mark = p->mark;
31615     { // '['
31616         if (p->error_indicator) {
31617             p->level--;
31618             return NULL;
31619         }
31620         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
31621         Token * _literal;
31622         if (
31623             (_literal = _PyPegen_expect_token(p, 9))  // token='['
31624         )
31625         {
31626             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
31627             _res = _literal;
31628             goto done;
31629         }
31630         p->mark = _mark;
31631         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
31632                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
31633     }
31634     { // '('
31635         if (p->error_indicator) {
31636             p->level--;
31637             return NULL;
31638         }
31639         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
31640         Token * _literal;
31641         if (
31642             (_literal = _PyPegen_expect_token(p, 7))  // token='('
31643         )
31644         {
31645             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
31646             _res = _literal;
31647             goto done;
31648         }
31649         p->mark = _mark;
31650         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
31651                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
31652     }
31653     { // '{'
31654         if (p->error_indicator) {
31655             p->level--;
31656             return NULL;
31657         }
31658         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
31659         Token * _literal;
31660         if (
31661             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
31662         )
31663         {
31664             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
31665             _res = _literal;
31666             goto done;
31667         }
31668         p->mark = _mark;
31669         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
31670                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
31671     }
31672     _res = NULL;
31673   done:
31674     p->level--;
31675     return _res;
31676 }
31677 
31678 // _tmp_154: '[' | '{'
31679 static void *
_tmp_154_rule(Parser * p)31680 _tmp_154_rule(Parser *p)
31681 {
31682     if (p->level++ == MAXSTACK) {
31683         p->error_indicator = 1;
31684         PyErr_NoMemory();
31685     }
31686     if (p->error_indicator) {
31687         p->level--;
31688         return NULL;
31689     }
31690     void * _res = NULL;
31691     int _mark = p->mark;
31692     { // '['
31693         if (p->error_indicator) {
31694             p->level--;
31695             return NULL;
31696         }
31697         D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
31698         Token * _literal;
31699         if (
31700             (_literal = _PyPegen_expect_token(p, 9))  // token='['
31701         )
31702         {
31703             D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
31704             _res = _literal;
31705             goto done;
31706         }
31707         p->mark = _mark;
31708         D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
31709                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
31710     }
31711     { // '{'
31712         if (p->error_indicator) {
31713             p->level--;
31714             return NULL;
31715         }
31716         D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
31717         Token * _literal;
31718         if (
31719             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
31720         )
31721         {
31722             D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
31723             _res = _literal;
31724             goto done;
31725         }
31726         p->mark = _mark;
31727         D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
31728                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
31729     }
31730     _res = NULL;
31731   done:
31732     p->level--;
31733     return _res;
31734 }
31735 
31736 // _tmp_155: '[' | '{'
31737 static void *
_tmp_155_rule(Parser * p)31738 _tmp_155_rule(Parser *p)
31739 {
31740     if (p->level++ == MAXSTACK) {
31741         p->error_indicator = 1;
31742         PyErr_NoMemory();
31743     }
31744     if (p->error_indicator) {
31745         p->level--;
31746         return NULL;
31747     }
31748     void * _res = NULL;
31749     int _mark = p->mark;
31750     { // '['
31751         if (p->error_indicator) {
31752             p->level--;
31753             return NULL;
31754         }
31755         D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
31756         Token * _literal;
31757         if (
31758             (_literal = _PyPegen_expect_token(p, 9))  // token='['
31759         )
31760         {
31761             D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
31762             _res = _literal;
31763             goto done;
31764         }
31765         p->mark = _mark;
31766         D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
31767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
31768     }
31769     { // '{'
31770         if (p->error_indicator) {
31771             p->level--;
31772             return NULL;
31773         }
31774         D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
31775         Token * _literal;
31776         if (
31777             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
31778         )
31779         {
31780             D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
31781             _res = _literal;
31782             goto done;
31783         }
31784         p->mark = _mark;
31785         D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
31786                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
31787     }
31788     _res = NULL;
31789   done:
31790     p->level--;
31791     return _res;
31792 }
31793 
31794 // _loop0_156: param_no_default
31795 static asdl_seq *
_loop0_156_rule(Parser * p)31796 _loop0_156_rule(Parser *p)
31797 {
31798     if (p->level++ == MAXSTACK) {
31799         p->error_indicator = 1;
31800         PyErr_NoMemory();
31801     }
31802     if (p->error_indicator) {
31803         p->level--;
31804         return NULL;
31805     }
31806     void *_res = NULL;
31807     int _mark = p->mark;
31808     int _start_mark = p->mark;
31809     void **_children = PyMem_Malloc(sizeof(void *));
31810     if (!_children) {
31811         p->error_indicator = 1;
31812         PyErr_NoMemory();
31813         p->level--;
31814         return NULL;
31815     }
31816     Py_ssize_t _children_capacity = 1;
31817     Py_ssize_t _n = 0;
31818     { // param_no_default
31819         if (p->error_indicator) {
31820             p->level--;
31821             return NULL;
31822         }
31823         D(fprintf(stderr, "%*c> _loop0_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
31824         arg_ty param_no_default_var;
31825         while (
31826             (param_no_default_var = param_no_default_rule(p))  // param_no_default
31827         )
31828         {
31829             _res = param_no_default_var;
31830             if (_n == _children_capacity) {
31831                 _children_capacity *= 2;
31832                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31833                 if (!_new_children) {
31834                     p->error_indicator = 1;
31835                     PyErr_NoMemory();
31836                     p->level--;
31837                     return NULL;
31838                 }
31839                 _children = _new_children;
31840             }
31841             _children[_n++] = _res;
31842             _mark = p->mark;
31843         }
31844         p->mark = _mark;
31845         D(fprintf(stderr, "%*c%s _loop0_156[%d-%d]: %s failed!\n", p->level, ' ',
31846                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
31847     }
31848     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31849     if (!_seq) {
31850         PyMem_Free(_children);
31851         p->error_indicator = 1;
31852         PyErr_NoMemory();
31853         p->level--;
31854         return NULL;
31855     }
31856     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31857     PyMem_Free(_children);
31858     _PyPegen_insert_memo(p, _start_mark, _loop0_156_type, _seq);
31859     p->level--;
31860     return _seq;
31861 }
31862 
31863 // _loop1_157: param_with_default
31864 static asdl_seq *
_loop1_157_rule(Parser * p)31865 _loop1_157_rule(Parser *p)
31866 {
31867     if (p->level++ == MAXSTACK) {
31868         p->error_indicator = 1;
31869         PyErr_NoMemory();
31870     }
31871     if (p->error_indicator) {
31872         p->level--;
31873         return NULL;
31874     }
31875     void *_res = NULL;
31876     int _mark = p->mark;
31877     int _start_mark = p->mark;
31878     void **_children = PyMem_Malloc(sizeof(void *));
31879     if (!_children) {
31880         p->error_indicator = 1;
31881         PyErr_NoMemory();
31882         p->level--;
31883         return NULL;
31884     }
31885     Py_ssize_t _children_capacity = 1;
31886     Py_ssize_t _n = 0;
31887     { // param_with_default
31888         if (p->error_indicator) {
31889             p->level--;
31890             return NULL;
31891         }
31892         D(fprintf(stderr, "%*c> _loop1_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
31893         NameDefaultPair* param_with_default_var;
31894         while (
31895             (param_with_default_var = param_with_default_rule(p))  // param_with_default
31896         )
31897         {
31898             _res = param_with_default_var;
31899             if (_n == _children_capacity) {
31900                 _children_capacity *= 2;
31901                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31902                 if (!_new_children) {
31903                     p->error_indicator = 1;
31904                     PyErr_NoMemory();
31905                     p->level--;
31906                     return NULL;
31907                 }
31908                 _children = _new_children;
31909             }
31910             _children[_n++] = _res;
31911             _mark = p->mark;
31912         }
31913         p->mark = _mark;
31914         D(fprintf(stderr, "%*c%s _loop1_157[%d-%d]: %s failed!\n", p->level, ' ',
31915                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
31916     }
31917     if (_n == 0 || p->error_indicator) {
31918         PyMem_Free(_children);
31919         p->level--;
31920         return NULL;
31921     }
31922     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31923     if (!_seq) {
31924         PyMem_Free(_children);
31925         p->error_indicator = 1;
31926         PyErr_NoMemory();
31927         p->level--;
31928         return NULL;
31929     }
31930     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31931     PyMem_Free(_children);
31932     _PyPegen_insert_memo(p, _start_mark, _loop1_157_type, _seq);
31933     p->level--;
31934     return _seq;
31935 }
31936 
31937 // _loop0_158: lambda_param_no_default
31938 static asdl_seq *
_loop0_158_rule(Parser * p)31939 _loop0_158_rule(Parser *p)
31940 {
31941     if (p->level++ == MAXSTACK) {
31942         p->error_indicator = 1;
31943         PyErr_NoMemory();
31944     }
31945     if (p->error_indicator) {
31946         p->level--;
31947         return NULL;
31948     }
31949     void *_res = NULL;
31950     int _mark = p->mark;
31951     int _start_mark = p->mark;
31952     void **_children = PyMem_Malloc(sizeof(void *));
31953     if (!_children) {
31954         p->error_indicator = 1;
31955         PyErr_NoMemory();
31956         p->level--;
31957         return NULL;
31958     }
31959     Py_ssize_t _children_capacity = 1;
31960     Py_ssize_t _n = 0;
31961     { // lambda_param_no_default
31962         if (p->error_indicator) {
31963             p->level--;
31964             return NULL;
31965         }
31966         D(fprintf(stderr, "%*c> _loop0_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31967         arg_ty lambda_param_no_default_var;
31968         while (
31969             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31970         )
31971         {
31972             _res = lambda_param_no_default_var;
31973             if (_n == _children_capacity) {
31974                 _children_capacity *= 2;
31975                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31976                 if (!_new_children) {
31977                     p->error_indicator = 1;
31978                     PyErr_NoMemory();
31979                     p->level--;
31980                     return NULL;
31981                 }
31982                 _children = _new_children;
31983             }
31984             _children[_n++] = _res;
31985             _mark = p->mark;
31986         }
31987         p->mark = _mark;
31988         D(fprintf(stderr, "%*c%s _loop0_158[%d-%d]: %s failed!\n", p->level, ' ',
31989                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31990     }
31991     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31992     if (!_seq) {
31993         PyMem_Free(_children);
31994         p->error_indicator = 1;
31995         PyErr_NoMemory();
31996         p->level--;
31997         return NULL;
31998     }
31999     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32000     PyMem_Free(_children);
32001     _PyPegen_insert_memo(p, _start_mark, _loop0_158_type, _seq);
32002     p->level--;
32003     return _seq;
32004 }
32005 
32006 // _loop1_159: lambda_param_with_default
32007 static asdl_seq *
_loop1_159_rule(Parser * p)32008 _loop1_159_rule(Parser *p)
32009 {
32010     if (p->level++ == MAXSTACK) {
32011         p->error_indicator = 1;
32012         PyErr_NoMemory();
32013     }
32014     if (p->error_indicator) {
32015         p->level--;
32016         return NULL;
32017     }
32018     void *_res = NULL;
32019     int _mark = p->mark;
32020     int _start_mark = p->mark;
32021     void **_children = PyMem_Malloc(sizeof(void *));
32022     if (!_children) {
32023         p->error_indicator = 1;
32024         PyErr_NoMemory();
32025         p->level--;
32026         return NULL;
32027     }
32028     Py_ssize_t _children_capacity = 1;
32029     Py_ssize_t _n = 0;
32030     { // lambda_param_with_default
32031         if (p->error_indicator) {
32032             p->level--;
32033             return NULL;
32034         }
32035         D(fprintf(stderr, "%*c> _loop1_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
32036         NameDefaultPair* lambda_param_with_default_var;
32037         while (
32038             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
32039         )
32040         {
32041             _res = lambda_param_with_default_var;
32042             if (_n == _children_capacity) {
32043                 _children_capacity *= 2;
32044                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32045                 if (!_new_children) {
32046                     p->error_indicator = 1;
32047                     PyErr_NoMemory();
32048                     p->level--;
32049                     return NULL;
32050                 }
32051                 _children = _new_children;
32052             }
32053             _children[_n++] = _res;
32054             _mark = p->mark;
32055         }
32056         p->mark = _mark;
32057         D(fprintf(stderr, "%*c%s _loop1_159[%d-%d]: %s failed!\n", p->level, ' ',
32058                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
32059     }
32060     if (_n == 0 || p->error_indicator) {
32061         PyMem_Free(_children);
32062         p->level--;
32063         return NULL;
32064     }
32065     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32066     if (!_seq) {
32067         PyMem_Free(_children);
32068         p->error_indicator = 1;
32069         PyErr_NoMemory();
32070         p->level--;
32071         return NULL;
32072     }
32073     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32074     PyMem_Free(_children);
32075     _PyPegen_insert_memo(p, _start_mark, _loop1_159_type, _seq);
32076     p->level--;
32077     return _seq;
32078 }
32079 
32080 // _tmp_160: ')' | ',' (')' | '**')
32081 static void *
_tmp_160_rule(Parser * p)32082 _tmp_160_rule(Parser *p)
32083 {
32084     if (p->level++ == MAXSTACK) {
32085         p->error_indicator = 1;
32086         PyErr_NoMemory();
32087     }
32088     if (p->error_indicator) {
32089         p->level--;
32090         return NULL;
32091     }
32092     void * _res = NULL;
32093     int _mark = p->mark;
32094     { // ')'
32095         if (p->error_indicator) {
32096             p->level--;
32097             return NULL;
32098         }
32099         D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
32100         Token * _literal;
32101         if (
32102             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
32103         )
32104         {
32105             D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
32106             _res = _literal;
32107             goto done;
32108         }
32109         p->mark = _mark;
32110         D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
32111                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
32112     }
32113     { // ',' (')' | '**')
32114         if (p->error_indicator) {
32115             p->level--;
32116             return NULL;
32117         }
32118         D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
32119         Token * _literal;
32120         void *_tmp_196_var;
32121         if (
32122             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32123             &&
32124             (_tmp_196_var = _tmp_196_rule(p))  // ')' | '**'
32125         )
32126         {
32127             D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
32128             _res = _PyPegen_dummy_name(p, _literal, _tmp_196_var);
32129             goto done;
32130         }
32131         p->mark = _mark;
32132         D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
32133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
32134     }
32135     _res = NULL;
32136   done:
32137     p->level--;
32138     return _res;
32139 }
32140 
32141 // _tmp_161: ':' | ',' (':' | '**')
32142 static void *
_tmp_161_rule(Parser * p)32143 _tmp_161_rule(Parser *p)
32144 {
32145     if (p->level++ == MAXSTACK) {
32146         p->error_indicator = 1;
32147         PyErr_NoMemory();
32148     }
32149     if (p->error_indicator) {
32150         p->level--;
32151         return NULL;
32152     }
32153     void * _res = NULL;
32154     int _mark = p->mark;
32155     { // ':'
32156         if (p->error_indicator) {
32157             p->level--;
32158             return NULL;
32159         }
32160         D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
32161         Token * _literal;
32162         if (
32163             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
32164         )
32165         {
32166             D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
32167             _res = _literal;
32168             goto done;
32169         }
32170         p->mark = _mark;
32171         D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
32172                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
32173     }
32174     { // ',' (':' | '**')
32175         if (p->error_indicator) {
32176             p->level--;
32177             return NULL;
32178         }
32179         D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
32180         Token * _literal;
32181         void *_tmp_197_var;
32182         if (
32183             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32184             &&
32185             (_tmp_197_var = _tmp_197_rule(p))  // ':' | '**'
32186         )
32187         {
32188             D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
32189             _res = _PyPegen_dummy_name(p, _literal, _tmp_197_var);
32190             goto done;
32191         }
32192         p->mark = _mark;
32193         D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
32194                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
32195     }
32196     _res = NULL;
32197   done:
32198     p->level--;
32199     return _res;
32200 }
32201 
32202 // _tmp_162: ',' | ')' | ':'
32203 static void *
_tmp_162_rule(Parser * p)32204 _tmp_162_rule(Parser *p)
32205 {
32206     if (p->level++ == MAXSTACK) {
32207         p->error_indicator = 1;
32208         PyErr_NoMemory();
32209     }
32210     if (p->error_indicator) {
32211         p->level--;
32212         return NULL;
32213     }
32214     void * _res = NULL;
32215     int _mark = p->mark;
32216     { // ','
32217         if (p->error_indicator) {
32218             p->level--;
32219             return NULL;
32220         }
32221         D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
32222         Token * _literal;
32223         if (
32224             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32225         )
32226         {
32227             D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
32228             _res = _literal;
32229             goto done;
32230         }
32231         p->mark = _mark;
32232         D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
32233                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
32234     }
32235     { // ')'
32236         if (p->error_indicator) {
32237             p->level--;
32238             return NULL;
32239         }
32240         D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
32241         Token * _literal;
32242         if (
32243             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
32244         )
32245         {
32246             D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
32247             _res = _literal;
32248             goto done;
32249         }
32250         p->mark = _mark;
32251         D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
32252                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
32253     }
32254     { // ':'
32255         if (p->error_indicator) {
32256             p->level--;
32257             return NULL;
32258         }
32259         D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
32260         Token * _literal;
32261         if (
32262             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
32263         )
32264         {
32265             D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
32266             _res = _literal;
32267             goto done;
32268         }
32269         p->mark = _mark;
32270         D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
32271                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
32272     }
32273     _res = NULL;
32274   done:
32275     p->level--;
32276     return _res;
32277 }
32278 
32279 // _loop0_164: ',' (expression ['as' star_target])
32280 static asdl_seq *
_loop0_164_rule(Parser * p)32281 _loop0_164_rule(Parser *p)
32282 {
32283     if (p->level++ == MAXSTACK) {
32284         p->error_indicator = 1;
32285         PyErr_NoMemory();
32286     }
32287     if (p->error_indicator) {
32288         p->level--;
32289         return NULL;
32290     }
32291     void *_res = NULL;
32292     int _mark = p->mark;
32293     int _start_mark = p->mark;
32294     void **_children = PyMem_Malloc(sizeof(void *));
32295     if (!_children) {
32296         p->error_indicator = 1;
32297         PyErr_NoMemory();
32298         p->level--;
32299         return NULL;
32300     }
32301     Py_ssize_t _children_capacity = 1;
32302     Py_ssize_t _n = 0;
32303     { // ',' (expression ['as' star_target])
32304         if (p->error_indicator) {
32305             p->level--;
32306             return NULL;
32307         }
32308         D(fprintf(stderr, "%*c> _loop0_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
32309         Token * _literal;
32310         void *elem;
32311         while (
32312             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32313             &&
32314             (elem = _tmp_198_rule(p))  // expression ['as' star_target]
32315         )
32316         {
32317             _res = elem;
32318             if (_res == NULL && PyErr_Occurred()) {
32319                 p->error_indicator = 1;
32320                 PyMem_Free(_children);
32321                 p->level--;
32322                 return NULL;
32323             }
32324             if (_n == _children_capacity) {
32325                 _children_capacity *= 2;
32326                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32327                 if (!_new_children) {
32328                     p->error_indicator = 1;
32329                     PyErr_NoMemory();
32330                     p->level--;
32331                     return NULL;
32332                 }
32333                 _children = _new_children;
32334             }
32335             _children[_n++] = _res;
32336             _mark = p->mark;
32337         }
32338         p->mark = _mark;
32339         D(fprintf(stderr, "%*c%s _loop0_164[%d-%d]: %s failed!\n", p->level, ' ',
32340                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
32341     }
32342     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32343     if (!_seq) {
32344         PyMem_Free(_children);
32345         p->error_indicator = 1;
32346         PyErr_NoMemory();
32347         p->level--;
32348         return NULL;
32349     }
32350     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32351     PyMem_Free(_children);
32352     _PyPegen_insert_memo(p, _start_mark, _loop0_164_type, _seq);
32353     p->level--;
32354     return _seq;
32355 }
32356 
32357 // _gather_163: (expression ['as' star_target]) _loop0_164
32358 static asdl_seq *
_gather_163_rule(Parser * p)32359 _gather_163_rule(Parser *p)
32360 {
32361     if (p->level++ == MAXSTACK) {
32362         p->error_indicator = 1;
32363         PyErr_NoMemory();
32364     }
32365     if (p->error_indicator) {
32366         p->level--;
32367         return NULL;
32368     }
32369     asdl_seq * _res = NULL;
32370     int _mark = p->mark;
32371     { // (expression ['as' star_target]) _loop0_164
32372         if (p->error_indicator) {
32373             p->level--;
32374             return NULL;
32375         }
32376         D(fprintf(stderr, "%*c> _gather_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_164"));
32377         void *elem;
32378         asdl_seq * seq;
32379         if (
32380             (elem = _tmp_198_rule(p))  // expression ['as' star_target]
32381             &&
32382             (seq = _loop0_164_rule(p))  // _loop0_164
32383         )
32384         {
32385             D(fprintf(stderr, "%*c+ _gather_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_164"));
32386             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32387             goto done;
32388         }
32389         p->mark = _mark;
32390         D(fprintf(stderr, "%*c%s _gather_163[%d-%d]: %s failed!\n", p->level, ' ',
32391                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_164"));
32392     }
32393     _res = NULL;
32394   done:
32395     p->level--;
32396     return _res;
32397 }
32398 
32399 // _loop0_166: ',' (expressions ['as' star_target])
32400 static asdl_seq *
_loop0_166_rule(Parser * p)32401 _loop0_166_rule(Parser *p)
32402 {
32403     if (p->level++ == MAXSTACK) {
32404         p->error_indicator = 1;
32405         PyErr_NoMemory();
32406     }
32407     if (p->error_indicator) {
32408         p->level--;
32409         return NULL;
32410     }
32411     void *_res = NULL;
32412     int _mark = p->mark;
32413     int _start_mark = p->mark;
32414     void **_children = PyMem_Malloc(sizeof(void *));
32415     if (!_children) {
32416         p->error_indicator = 1;
32417         PyErr_NoMemory();
32418         p->level--;
32419         return NULL;
32420     }
32421     Py_ssize_t _children_capacity = 1;
32422     Py_ssize_t _n = 0;
32423     { // ',' (expressions ['as' star_target])
32424         if (p->error_indicator) {
32425             p->level--;
32426             return NULL;
32427         }
32428         D(fprintf(stderr, "%*c> _loop0_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
32429         Token * _literal;
32430         void *elem;
32431         while (
32432             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32433             &&
32434             (elem = _tmp_199_rule(p))  // expressions ['as' star_target]
32435         )
32436         {
32437             _res = elem;
32438             if (_res == NULL && PyErr_Occurred()) {
32439                 p->error_indicator = 1;
32440                 PyMem_Free(_children);
32441                 p->level--;
32442                 return NULL;
32443             }
32444             if (_n == _children_capacity) {
32445                 _children_capacity *= 2;
32446                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32447                 if (!_new_children) {
32448                     p->error_indicator = 1;
32449                     PyErr_NoMemory();
32450                     p->level--;
32451                     return NULL;
32452                 }
32453                 _children = _new_children;
32454             }
32455             _children[_n++] = _res;
32456             _mark = p->mark;
32457         }
32458         p->mark = _mark;
32459         D(fprintf(stderr, "%*c%s _loop0_166[%d-%d]: %s failed!\n", p->level, ' ',
32460                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
32461     }
32462     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32463     if (!_seq) {
32464         PyMem_Free(_children);
32465         p->error_indicator = 1;
32466         PyErr_NoMemory();
32467         p->level--;
32468         return NULL;
32469     }
32470     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32471     PyMem_Free(_children);
32472     _PyPegen_insert_memo(p, _start_mark, _loop0_166_type, _seq);
32473     p->level--;
32474     return _seq;
32475 }
32476 
32477 // _gather_165: (expressions ['as' star_target]) _loop0_166
32478 static asdl_seq *
_gather_165_rule(Parser * p)32479 _gather_165_rule(Parser *p)
32480 {
32481     if (p->level++ == MAXSTACK) {
32482         p->error_indicator = 1;
32483         PyErr_NoMemory();
32484     }
32485     if (p->error_indicator) {
32486         p->level--;
32487         return NULL;
32488     }
32489     asdl_seq * _res = NULL;
32490     int _mark = p->mark;
32491     { // (expressions ['as' star_target]) _loop0_166
32492         if (p->error_indicator) {
32493             p->level--;
32494             return NULL;
32495         }
32496         D(fprintf(stderr, "%*c> _gather_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_166"));
32497         void *elem;
32498         asdl_seq * seq;
32499         if (
32500             (elem = _tmp_199_rule(p))  // expressions ['as' star_target]
32501             &&
32502             (seq = _loop0_166_rule(p))  // _loop0_166
32503         )
32504         {
32505             D(fprintf(stderr, "%*c+ _gather_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_166"));
32506             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32507             goto done;
32508         }
32509         p->mark = _mark;
32510         D(fprintf(stderr, "%*c%s _gather_165[%d-%d]: %s failed!\n", p->level, ' ',
32511                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_166"));
32512     }
32513     _res = NULL;
32514   done:
32515     p->level--;
32516     return _res;
32517 }
32518 
32519 // _loop0_168: ',' (expression ['as' star_target])
32520 static asdl_seq *
_loop0_168_rule(Parser * p)32521 _loop0_168_rule(Parser *p)
32522 {
32523     if (p->level++ == MAXSTACK) {
32524         p->error_indicator = 1;
32525         PyErr_NoMemory();
32526     }
32527     if (p->error_indicator) {
32528         p->level--;
32529         return NULL;
32530     }
32531     void *_res = NULL;
32532     int _mark = p->mark;
32533     int _start_mark = p->mark;
32534     void **_children = PyMem_Malloc(sizeof(void *));
32535     if (!_children) {
32536         p->error_indicator = 1;
32537         PyErr_NoMemory();
32538         p->level--;
32539         return NULL;
32540     }
32541     Py_ssize_t _children_capacity = 1;
32542     Py_ssize_t _n = 0;
32543     { // ',' (expression ['as' star_target])
32544         if (p->error_indicator) {
32545             p->level--;
32546             return NULL;
32547         }
32548         D(fprintf(stderr, "%*c> _loop0_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
32549         Token * _literal;
32550         void *elem;
32551         while (
32552             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32553             &&
32554             (elem = _tmp_200_rule(p))  // expression ['as' star_target]
32555         )
32556         {
32557             _res = elem;
32558             if (_res == NULL && PyErr_Occurred()) {
32559                 p->error_indicator = 1;
32560                 PyMem_Free(_children);
32561                 p->level--;
32562                 return NULL;
32563             }
32564             if (_n == _children_capacity) {
32565                 _children_capacity *= 2;
32566                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32567                 if (!_new_children) {
32568                     p->error_indicator = 1;
32569                     PyErr_NoMemory();
32570                     p->level--;
32571                     return NULL;
32572                 }
32573                 _children = _new_children;
32574             }
32575             _children[_n++] = _res;
32576             _mark = p->mark;
32577         }
32578         p->mark = _mark;
32579         D(fprintf(stderr, "%*c%s _loop0_168[%d-%d]: %s failed!\n", p->level, ' ',
32580                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
32581     }
32582     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32583     if (!_seq) {
32584         PyMem_Free(_children);
32585         p->error_indicator = 1;
32586         PyErr_NoMemory();
32587         p->level--;
32588         return NULL;
32589     }
32590     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32591     PyMem_Free(_children);
32592     _PyPegen_insert_memo(p, _start_mark, _loop0_168_type, _seq);
32593     p->level--;
32594     return _seq;
32595 }
32596 
32597 // _gather_167: (expression ['as' star_target]) _loop0_168
32598 static asdl_seq *
_gather_167_rule(Parser * p)32599 _gather_167_rule(Parser *p)
32600 {
32601     if (p->level++ == MAXSTACK) {
32602         p->error_indicator = 1;
32603         PyErr_NoMemory();
32604     }
32605     if (p->error_indicator) {
32606         p->level--;
32607         return NULL;
32608     }
32609     asdl_seq * _res = NULL;
32610     int _mark = p->mark;
32611     { // (expression ['as' star_target]) _loop0_168
32612         if (p->error_indicator) {
32613             p->level--;
32614             return NULL;
32615         }
32616         D(fprintf(stderr, "%*c> _gather_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_168"));
32617         void *elem;
32618         asdl_seq * seq;
32619         if (
32620             (elem = _tmp_200_rule(p))  // expression ['as' star_target]
32621             &&
32622             (seq = _loop0_168_rule(p))  // _loop0_168
32623         )
32624         {
32625             D(fprintf(stderr, "%*c+ _gather_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_168"));
32626             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32627             goto done;
32628         }
32629         p->mark = _mark;
32630         D(fprintf(stderr, "%*c%s _gather_167[%d-%d]: %s failed!\n", p->level, ' ',
32631                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_168"));
32632     }
32633     _res = NULL;
32634   done:
32635     p->level--;
32636     return _res;
32637 }
32638 
32639 // _loop0_170: ',' (expressions ['as' star_target])
32640 static asdl_seq *
_loop0_170_rule(Parser * p)32641 _loop0_170_rule(Parser *p)
32642 {
32643     if (p->level++ == MAXSTACK) {
32644         p->error_indicator = 1;
32645         PyErr_NoMemory();
32646     }
32647     if (p->error_indicator) {
32648         p->level--;
32649         return NULL;
32650     }
32651     void *_res = NULL;
32652     int _mark = p->mark;
32653     int _start_mark = p->mark;
32654     void **_children = PyMem_Malloc(sizeof(void *));
32655     if (!_children) {
32656         p->error_indicator = 1;
32657         PyErr_NoMemory();
32658         p->level--;
32659         return NULL;
32660     }
32661     Py_ssize_t _children_capacity = 1;
32662     Py_ssize_t _n = 0;
32663     { // ',' (expressions ['as' star_target])
32664         if (p->error_indicator) {
32665             p->level--;
32666             return NULL;
32667         }
32668         D(fprintf(stderr, "%*c> _loop0_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
32669         Token * _literal;
32670         void *elem;
32671         while (
32672             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32673             &&
32674             (elem = _tmp_201_rule(p))  // expressions ['as' star_target]
32675         )
32676         {
32677             _res = elem;
32678             if (_res == NULL && PyErr_Occurred()) {
32679                 p->error_indicator = 1;
32680                 PyMem_Free(_children);
32681                 p->level--;
32682                 return NULL;
32683             }
32684             if (_n == _children_capacity) {
32685                 _children_capacity *= 2;
32686                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32687                 if (!_new_children) {
32688                     p->error_indicator = 1;
32689                     PyErr_NoMemory();
32690                     p->level--;
32691                     return NULL;
32692                 }
32693                 _children = _new_children;
32694             }
32695             _children[_n++] = _res;
32696             _mark = p->mark;
32697         }
32698         p->mark = _mark;
32699         D(fprintf(stderr, "%*c%s _loop0_170[%d-%d]: %s failed!\n", p->level, ' ',
32700                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
32701     }
32702     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32703     if (!_seq) {
32704         PyMem_Free(_children);
32705         p->error_indicator = 1;
32706         PyErr_NoMemory();
32707         p->level--;
32708         return NULL;
32709     }
32710     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32711     PyMem_Free(_children);
32712     _PyPegen_insert_memo(p, _start_mark, _loop0_170_type, _seq);
32713     p->level--;
32714     return _seq;
32715 }
32716 
32717 // _gather_169: (expressions ['as' star_target]) _loop0_170
32718 static asdl_seq *
_gather_169_rule(Parser * p)32719 _gather_169_rule(Parser *p)
32720 {
32721     if (p->level++ == MAXSTACK) {
32722         p->error_indicator = 1;
32723         PyErr_NoMemory();
32724     }
32725     if (p->error_indicator) {
32726         p->level--;
32727         return NULL;
32728     }
32729     asdl_seq * _res = NULL;
32730     int _mark = p->mark;
32731     { // (expressions ['as' star_target]) _loop0_170
32732         if (p->error_indicator) {
32733             p->level--;
32734             return NULL;
32735         }
32736         D(fprintf(stderr, "%*c> _gather_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_170"));
32737         void *elem;
32738         asdl_seq * seq;
32739         if (
32740             (elem = _tmp_201_rule(p))  // expressions ['as' star_target]
32741             &&
32742             (seq = _loop0_170_rule(p))  // _loop0_170
32743         )
32744         {
32745             D(fprintf(stderr, "%*c+ _gather_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_170"));
32746             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32747             goto done;
32748         }
32749         p->mark = _mark;
32750         D(fprintf(stderr, "%*c%s _gather_169[%d-%d]: %s failed!\n", p->level, ' ',
32751                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_170"));
32752     }
32753     _res = NULL;
32754   done:
32755     p->level--;
32756     return _res;
32757 }
32758 
32759 // _tmp_171: 'except' | 'finally'
32760 static void *
_tmp_171_rule(Parser * p)32761 _tmp_171_rule(Parser *p)
32762 {
32763     if (p->level++ == MAXSTACK) {
32764         p->error_indicator = 1;
32765         PyErr_NoMemory();
32766     }
32767     if (p->error_indicator) {
32768         p->level--;
32769         return NULL;
32770     }
32771     void * _res = NULL;
32772     int _mark = p->mark;
32773     { // 'except'
32774         if (p->error_indicator) {
32775             p->level--;
32776             return NULL;
32777         }
32778         D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
32779         Token * _keyword;
32780         if (
32781             (_keyword = _PyPegen_expect_token(p, 521))  // token='except'
32782         )
32783         {
32784             D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
32785             _res = _keyword;
32786             goto done;
32787         }
32788         p->mark = _mark;
32789         D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
32790                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
32791     }
32792     { // 'finally'
32793         if (p->error_indicator) {
32794             p->level--;
32795             return NULL;
32796         }
32797         D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
32798         Token * _keyword;
32799         if (
32800             (_keyword = _PyPegen_expect_token(p, 522))  // token='finally'
32801         )
32802         {
32803             D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
32804             _res = _keyword;
32805             goto done;
32806         }
32807         p->mark = _mark;
32808         D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
32809                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
32810     }
32811     _res = NULL;
32812   done:
32813     p->level--;
32814     return _res;
32815 }
32816 
32817 // _tmp_172: 'as' NAME
32818 static void *
_tmp_172_rule(Parser * p)32819 _tmp_172_rule(Parser *p)
32820 {
32821     if (p->level++ == MAXSTACK) {
32822         p->error_indicator = 1;
32823         PyErr_NoMemory();
32824     }
32825     if (p->error_indicator) {
32826         p->level--;
32827         return NULL;
32828     }
32829     void * _res = NULL;
32830     int _mark = p->mark;
32831     { // 'as' NAME
32832         if (p->error_indicator) {
32833             p->level--;
32834             return NULL;
32835         }
32836         D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32837         Token * _keyword;
32838         expr_ty name_var;
32839         if (
32840             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
32841             &&
32842             (name_var = _PyPegen_name_token(p))  // NAME
32843         )
32844         {
32845             D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32846             _res = _PyPegen_dummy_name(p, _keyword, name_var);
32847             goto done;
32848         }
32849         p->mark = _mark;
32850         D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
32851                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
32852     }
32853     _res = NULL;
32854   done:
32855     p->level--;
32856     return _res;
32857 }
32858 
32859 // _tmp_173: 'as' NAME
32860 static void *
_tmp_173_rule(Parser * p)32861 _tmp_173_rule(Parser *p)
32862 {
32863     if (p->level++ == MAXSTACK) {
32864         p->error_indicator = 1;
32865         PyErr_NoMemory();
32866     }
32867     if (p->error_indicator) {
32868         p->level--;
32869         return NULL;
32870     }
32871     void * _res = NULL;
32872     int _mark = p->mark;
32873     { // 'as' NAME
32874         if (p->error_indicator) {
32875             p->level--;
32876             return NULL;
32877         }
32878         D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32879         Token * _keyword;
32880         expr_ty name_var;
32881         if (
32882             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
32883             &&
32884             (name_var = _PyPegen_name_token(p))  // NAME
32885         )
32886         {
32887             D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32888             _res = _PyPegen_dummy_name(p, _keyword, name_var);
32889             goto done;
32890         }
32891         p->mark = _mark;
32892         D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
32893                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
32894     }
32895     _res = NULL;
32896   done:
32897     p->level--;
32898     return _res;
32899 }
32900 
32901 // _tmp_174: 'as' NAME
32902 static void *
_tmp_174_rule(Parser * p)32903 _tmp_174_rule(Parser *p)
32904 {
32905     if (p->level++ == MAXSTACK) {
32906         p->error_indicator = 1;
32907         PyErr_NoMemory();
32908     }
32909     if (p->error_indicator) {
32910         p->level--;
32911         return NULL;
32912     }
32913     void * _res = NULL;
32914     int _mark = p->mark;
32915     { // 'as' NAME
32916         if (p->error_indicator) {
32917             p->level--;
32918             return NULL;
32919         }
32920         D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32921         Token * _keyword;
32922         expr_ty name_var;
32923         if (
32924             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
32925             &&
32926             (name_var = _PyPegen_name_token(p))  // NAME
32927         )
32928         {
32929             D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32930             _res = _PyPegen_dummy_name(p, _keyword, name_var);
32931             goto done;
32932         }
32933         p->mark = _mark;
32934         D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
32935                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
32936     }
32937     _res = NULL;
32938   done:
32939     p->level--;
32940     return _res;
32941 }
32942 
32943 // _tmp_175: positional_patterns ','
32944 static void *
_tmp_175_rule(Parser * p)32945 _tmp_175_rule(Parser *p)
32946 {
32947     if (p->level++ == MAXSTACK) {
32948         p->error_indicator = 1;
32949         PyErr_NoMemory();
32950     }
32951     if (p->error_indicator) {
32952         p->level--;
32953         return NULL;
32954     }
32955     void * _res = NULL;
32956     int _mark = p->mark;
32957     { // positional_patterns ','
32958         if (p->error_indicator) {
32959             p->level--;
32960             return NULL;
32961         }
32962         D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
32963         Token * _literal;
32964         asdl_pattern_seq* positional_patterns_var;
32965         if (
32966             (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
32967             &&
32968             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32969         )
32970         {
32971             D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
32972             _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
32973             goto done;
32974         }
32975         p->mark = _mark;
32976         D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ',
32977                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
32978     }
32979     _res = NULL;
32980   done:
32981     p->level--;
32982     return _res;
32983 }
32984 
32985 // _tmp_176: '->' expression
32986 static void *
_tmp_176_rule(Parser * p)32987 _tmp_176_rule(Parser *p)
32988 {
32989     if (p->level++ == MAXSTACK) {
32990         p->error_indicator = 1;
32991         PyErr_NoMemory();
32992     }
32993     if (p->error_indicator) {
32994         p->level--;
32995         return NULL;
32996     }
32997     void * _res = NULL;
32998     int _mark = p->mark;
32999     { // '->' expression
33000         if (p->error_indicator) {
33001             p->level--;
33002             return NULL;
33003         }
33004         D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
33005         Token * _literal;
33006         expr_ty expression_var;
33007         if (
33008             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
33009             &&
33010             (expression_var = expression_rule(p))  // expression
33011         )
33012         {
33013             D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
33014             _res = _PyPegen_dummy_name(p, _literal, expression_var);
33015             goto done;
33016         }
33017         p->mark = _mark;
33018         D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ',
33019                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
33020     }
33021     _res = NULL;
33022   done:
33023     p->level--;
33024     return _res;
33025 }
33026 
33027 // _tmp_177: '(' arguments? ')'
33028 static void *
_tmp_177_rule(Parser * p)33029 _tmp_177_rule(Parser *p)
33030 {
33031     if (p->level++ == MAXSTACK) {
33032         p->error_indicator = 1;
33033         PyErr_NoMemory();
33034     }
33035     if (p->error_indicator) {
33036         p->level--;
33037         return NULL;
33038     }
33039     void * _res = NULL;
33040     int _mark = p->mark;
33041     { // '(' arguments? ')'
33042         if (p->error_indicator) {
33043             p->level--;
33044             return NULL;
33045         }
33046         D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
33047         Token * _literal;
33048         Token * _literal_1;
33049         void *_opt_var;
33050         UNUSED(_opt_var); // Silence compiler warnings
33051         if (
33052             (_literal = _PyPegen_expect_token(p, 7))  // token='('
33053             &&
33054             (_opt_var = arguments_rule(p), !p->error_indicator)  // arguments?
33055             &&
33056             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
33057         )
33058         {
33059             D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
33060             _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1);
33061             goto done;
33062         }
33063         p->mark = _mark;
33064         D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ',
33065                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
33066     }
33067     _res = NULL;
33068   done:
33069     p->level--;
33070     return _res;
33071 }
33072 
33073 // _loop0_179: ',' double_starred_kvpair
33074 static asdl_seq *
_loop0_179_rule(Parser * p)33075 _loop0_179_rule(Parser *p)
33076 {
33077     if (p->level++ == MAXSTACK) {
33078         p->error_indicator = 1;
33079         PyErr_NoMemory();
33080     }
33081     if (p->error_indicator) {
33082         p->level--;
33083         return NULL;
33084     }
33085     void *_res = NULL;
33086     int _mark = p->mark;
33087     int _start_mark = p->mark;
33088     void **_children = PyMem_Malloc(sizeof(void *));
33089     if (!_children) {
33090         p->error_indicator = 1;
33091         PyErr_NoMemory();
33092         p->level--;
33093         return NULL;
33094     }
33095     Py_ssize_t _children_capacity = 1;
33096     Py_ssize_t _n = 0;
33097     { // ',' double_starred_kvpair
33098         if (p->error_indicator) {
33099             p->level--;
33100             return NULL;
33101         }
33102         D(fprintf(stderr, "%*c> _loop0_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
33103         Token * _literal;
33104         KeyValuePair* elem;
33105         while (
33106             (_literal = _PyPegen_expect_token(p, 12))  // token=','
33107             &&
33108             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
33109         )
33110         {
33111             _res = elem;
33112             if (_res == NULL && PyErr_Occurred()) {
33113                 p->error_indicator = 1;
33114                 PyMem_Free(_children);
33115                 p->level--;
33116                 return NULL;
33117             }
33118             if (_n == _children_capacity) {
33119                 _children_capacity *= 2;
33120                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33121                 if (!_new_children) {
33122                     p->error_indicator = 1;
33123                     PyErr_NoMemory();
33124                     p->level--;
33125                     return NULL;
33126                 }
33127                 _children = _new_children;
33128             }
33129             _children[_n++] = _res;
33130             _mark = p->mark;
33131         }
33132         p->mark = _mark;
33133         D(fprintf(stderr, "%*c%s _loop0_179[%d-%d]: %s failed!\n", p->level, ' ',
33134                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
33135     }
33136     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33137     if (!_seq) {
33138         PyMem_Free(_children);
33139         p->error_indicator = 1;
33140         PyErr_NoMemory();
33141         p->level--;
33142         return NULL;
33143     }
33144     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33145     PyMem_Free(_children);
33146     _PyPegen_insert_memo(p, _start_mark, _loop0_179_type, _seq);
33147     p->level--;
33148     return _seq;
33149 }
33150 
33151 // _gather_178: double_starred_kvpair _loop0_179
33152 static asdl_seq *
_gather_178_rule(Parser * p)33153 _gather_178_rule(Parser *p)
33154 {
33155     if (p->level++ == MAXSTACK) {
33156         p->error_indicator = 1;
33157         PyErr_NoMemory();
33158     }
33159     if (p->error_indicator) {
33160         p->level--;
33161         return NULL;
33162     }
33163     asdl_seq * _res = NULL;
33164     int _mark = p->mark;
33165     { // double_starred_kvpair _loop0_179
33166         if (p->error_indicator) {
33167             p->level--;
33168             return NULL;
33169         }
33170         D(fprintf(stderr, "%*c> _gather_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_179"));
33171         KeyValuePair* elem;
33172         asdl_seq * seq;
33173         if (
33174             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
33175             &&
33176             (seq = _loop0_179_rule(p))  // _loop0_179
33177         )
33178         {
33179             D(fprintf(stderr, "%*c+ _gather_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_179"));
33180             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33181             goto done;
33182         }
33183         p->mark = _mark;
33184         D(fprintf(stderr, "%*c%s _gather_178[%d-%d]: %s failed!\n", p->level, ' ',
33185                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_179"));
33186     }
33187     _res = NULL;
33188   done:
33189     p->level--;
33190     return _res;
33191 }
33192 
33193 // _tmp_180: '}' | ','
33194 static void *
_tmp_180_rule(Parser * p)33195 _tmp_180_rule(Parser *p)
33196 {
33197     if (p->level++ == MAXSTACK) {
33198         p->error_indicator = 1;
33199         PyErr_NoMemory();
33200     }
33201     if (p->error_indicator) {
33202         p->level--;
33203         return NULL;
33204     }
33205     void * _res = NULL;
33206     int _mark = p->mark;
33207     { // '}'
33208         if (p->error_indicator) {
33209             p->level--;
33210             return NULL;
33211         }
33212         D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
33213         Token * _literal;
33214         if (
33215             (_literal = _PyPegen_expect_token(p, 26))  // token='}'
33216         )
33217         {
33218             D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
33219             _res = _literal;
33220             goto done;
33221         }
33222         p->mark = _mark;
33223         D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ',
33224                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
33225     }
33226     { // ','
33227         if (p->error_indicator) {
33228             p->level--;
33229             return NULL;
33230         }
33231         D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
33232         Token * _literal;
33233         if (
33234             (_literal = _PyPegen_expect_token(p, 12))  // token=','
33235         )
33236         {
33237             D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
33238             _res = _literal;
33239             goto done;
33240         }
33241         p->mark = _mark;
33242         D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ',
33243                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
33244     }
33245     _res = NULL;
33246   done:
33247     p->level--;
33248     return _res;
33249 }
33250 
33251 // _tmp_181: star_targets '='
33252 static void *
_tmp_181_rule(Parser * p)33253 _tmp_181_rule(Parser *p)
33254 {
33255     if (p->level++ == MAXSTACK) {
33256         p->error_indicator = 1;
33257         PyErr_NoMemory();
33258     }
33259     if (p->error_indicator) {
33260         p->level--;
33261         return NULL;
33262     }
33263     void * _res = NULL;
33264     int _mark = p->mark;
33265     { // star_targets '='
33266         if (p->error_indicator) {
33267             p->level--;
33268             return NULL;
33269         }
33270         D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33271         Token * _literal;
33272         expr_ty z;
33273         if (
33274             (z = star_targets_rule(p))  // star_targets
33275             &&
33276             (_literal = _PyPegen_expect_token(p, 22))  // token='='
33277         )
33278         {
33279             D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33280             _res = z;
33281             if (_res == NULL && PyErr_Occurred()) {
33282                 p->error_indicator = 1;
33283                 p->level--;
33284                 return NULL;
33285             }
33286             goto done;
33287         }
33288         p->mark = _mark;
33289         D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ',
33290                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
33291     }
33292     _res = NULL;
33293   done:
33294     p->level--;
33295     return _res;
33296 }
33297 
33298 // _tmp_182: '.' | '...'
33299 static void *
_tmp_182_rule(Parser * p)33300 _tmp_182_rule(Parser *p)
33301 {
33302     if (p->level++ == MAXSTACK) {
33303         p->error_indicator = 1;
33304         PyErr_NoMemory();
33305     }
33306     if (p->error_indicator) {
33307         p->level--;
33308         return NULL;
33309     }
33310     void * _res = NULL;
33311     int _mark = p->mark;
33312     { // '.'
33313         if (p->error_indicator) {
33314             p->level--;
33315             return NULL;
33316         }
33317         D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
33318         Token * _literal;
33319         if (
33320             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
33321         )
33322         {
33323             D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
33324             _res = _literal;
33325             goto done;
33326         }
33327         p->mark = _mark;
33328         D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ',
33329                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
33330     }
33331     { // '...'
33332         if (p->error_indicator) {
33333             p->level--;
33334             return NULL;
33335         }
33336         D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
33337         Token * _literal;
33338         if (
33339             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
33340         )
33341         {
33342             D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
33343             _res = _literal;
33344             goto done;
33345         }
33346         p->mark = _mark;
33347         D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ',
33348                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
33349     }
33350     _res = NULL;
33351   done:
33352     p->level--;
33353     return _res;
33354 }
33355 
33356 // _tmp_183: '.' | '...'
33357 static void *
_tmp_183_rule(Parser * p)33358 _tmp_183_rule(Parser *p)
33359 {
33360     if (p->level++ == MAXSTACK) {
33361         p->error_indicator = 1;
33362         PyErr_NoMemory();
33363     }
33364     if (p->error_indicator) {
33365         p->level--;
33366         return NULL;
33367     }
33368     void * _res = NULL;
33369     int _mark = p->mark;
33370     { // '.'
33371         if (p->error_indicator) {
33372             p->level--;
33373             return NULL;
33374         }
33375         D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
33376         Token * _literal;
33377         if (
33378             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
33379         )
33380         {
33381             D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
33382             _res = _literal;
33383             goto done;
33384         }
33385         p->mark = _mark;
33386         D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ',
33387                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
33388     }
33389     { // '...'
33390         if (p->error_indicator) {
33391             p->level--;
33392             return NULL;
33393         }
33394         D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
33395         Token * _literal;
33396         if (
33397             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
33398         )
33399         {
33400             D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
33401             _res = _literal;
33402             goto done;
33403         }
33404         p->mark = _mark;
33405         D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ',
33406                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
33407     }
33408     _res = NULL;
33409   done:
33410     p->level--;
33411     return _res;
33412 }
33413 
33414 // _tmp_184: '@' named_expression NEWLINE
33415 static void *
_tmp_184_rule(Parser * p)33416 _tmp_184_rule(Parser *p)
33417 {
33418     if (p->level++ == MAXSTACK) {
33419         p->error_indicator = 1;
33420         PyErr_NoMemory();
33421     }
33422     if (p->error_indicator) {
33423         p->level--;
33424         return NULL;
33425     }
33426     void * _res = NULL;
33427     int _mark = p->mark;
33428     { // '@' named_expression NEWLINE
33429         if (p->error_indicator) {
33430             p->level--;
33431             return NULL;
33432         }
33433         D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
33434         Token * _literal;
33435         expr_ty f;
33436         Token * newline_var;
33437         if (
33438             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
33439             &&
33440             (f = named_expression_rule(p))  // named_expression
33441             &&
33442             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
33443         )
33444         {
33445             D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
33446             _res = f;
33447             if (_res == NULL && PyErr_Occurred()) {
33448                 p->error_indicator = 1;
33449                 p->level--;
33450                 return NULL;
33451             }
33452             goto done;
33453         }
33454         p->mark = _mark;
33455         D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ',
33456                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
33457     }
33458     _res = NULL;
33459   done:
33460     p->level--;
33461     return _res;
33462 }
33463 
33464 // _tmp_185: ',' star_expression
33465 static void *
_tmp_185_rule(Parser * p)33466 _tmp_185_rule(Parser *p)
33467 {
33468     if (p->level++ == MAXSTACK) {
33469         p->error_indicator = 1;
33470         PyErr_NoMemory();
33471     }
33472     if (p->error_indicator) {
33473         p->level--;
33474         return NULL;
33475     }
33476     void * _res = NULL;
33477     int _mark = p->mark;
33478     { // ',' star_expression
33479         if (p->error_indicator) {
33480             p->level--;
33481             return NULL;
33482         }
33483         D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
33484         Token * _literal;
33485         expr_ty c;
33486         if (
33487             (_literal = _PyPegen_expect_token(p, 12))  // token=','
33488             &&
33489             (c = star_expression_rule(p))  // star_expression
33490         )
33491         {
33492             D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
33493             _res = c;
33494             if (_res == NULL && PyErr_Occurred()) {
33495                 p->error_indicator = 1;
33496                 p->level--;
33497                 return NULL;
33498             }
33499             goto done;
33500         }
33501         p->mark = _mark;
33502         D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ',
33503                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
33504     }
33505     _res = NULL;
33506   done:
33507     p->level--;
33508     return _res;
33509 }
33510 
33511 // _tmp_186: ',' expression
33512 static void *
_tmp_186_rule(Parser * p)33513 _tmp_186_rule(Parser *p)
33514 {
33515     if (p->level++ == MAXSTACK) {
33516         p->error_indicator = 1;
33517         PyErr_NoMemory();
33518     }
33519     if (p->error_indicator) {
33520         p->level--;
33521         return NULL;
33522     }
33523     void * _res = NULL;
33524     int _mark = p->mark;
33525     { // ',' expression
33526         if (p->error_indicator) {
33527             p->level--;
33528             return NULL;
33529         }
33530         D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
33531         Token * _literal;
33532         expr_ty c;
33533         if (
33534             (_literal = _PyPegen_expect_token(p, 12))  // token=','
33535             &&
33536             (c = expression_rule(p))  // expression
33537         )
33538         {
33539             D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
33540             _res = c;
33541             if (_res == NULL && PyErr_Occurred()) {
33542                 p->error_indicator = 1;
33543                 p->level--;
33544                 return NULL;
33545             }
33546             goto done;
33547         }
33548         p->mark = _mark;
33549         D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ',
33550                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
33551     }
33552     _res = NULL;
33553   done:
33554     p->level--;
33555     return _res;
33556 }
33557 
33558 // _tmp_187: 'or' conjunction
33559 static void *
_tmp_187_rule(Parser * p)33560 _tmp_187_rule(Parser *p)
33561 {
33562     if (p->level++ == MAXSTACK) {
33563         p->error_indicator = 1;
33564         PyErr_NoMemory();
33565     }
33566     if (p->error_indicator) {
33567         p->level--;
33568         return NULL;
33569     }
33570     void * _res = NULL;
33571     int _mark = p->mark;
33572     { // 'or' conjunction
33573         if (p->error_indicator) {
33574             p->level--;
33575             return NULL;
33576         }
33577         D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
33578         Token * _keyword;
33579         expr_ty c;
33580         if (
33581             (_keyword = _PyPegen_expect_token(p, 531))  // token='or'
33582             &&
33583             (c = conjunction_rule(p))  // conjunction
33584         )
33585         {
33586             D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
33587             _res = c;
33588             if (_res == NULL && PyErr_Occurred()) {
33589                 p->error_indicator = 1;
33590                 p->level--;
33591                 return NULL;
33592             }
33593             goto done;
33594         }
33595         p->mark = _mark;
33596         D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ',
33597                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
33598     }
33599     _res = NULL;
33600   done:
33601     p->level--;
33602     return _res;
33603 }
33604 
33605 // _tmp_188: 'and' inversion
33606 static void *
_tmp_188_rule(Parser * p)33607 _tmp_188_rule(Parser *p)
33608 {
33609     if (p->level++ == MAXSTACK) {
33610         p->error_indicator = 1;
33611         PyErr_NoMemory();
33612     }
33613     if (p->error_indicator) {
33614         p->level--;
33615         return NULL;
33616     }
33617     void * _res = NULL;
33618     int _mark = p->mark;
33619     { // 'and' inversion
33620         if (p->error_indicator) {
33621             p->level--;
33622             return NULL;
33623         }
33624         D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
33625         Token * _keyword;
33626         expr_ty c;
33627         if (
33628             (_keyword = _PyPegen_expect_token(p, 532))  // token='and'
33629             &&
33630             (c = inversion_rule(p))  // inversion
33631         )
33632         {
33633             D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
33634             _res = c;
33635             if (_res == NULL && PyErr_Occurred()) {
33636                 p->error_indicator = 1;
33637                 p->level--;
33638                 return NULL;
33639             }
33640             goto done;
33641         }
33642         p->mark = _mark;
33643         D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ',
33644                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
33645     }
33646     _res = NULL;
33647   done:
33648     p->level--;
33649     return _res;
33650 }
33651 
33652 // _tmp_189: 'if' disjunction
33653 static void *
_tmp_189_rule(Parser * p)33654 _tmp_189_rule(Parser *p)
33655 {
33656     if (p->level++ == MAXSTACK) {
33657         p->error_indicator = 1;
33658         PyErr_NoMemory();
33659     }
33660     if (p->error_indicator) {
33661         p->level--;
33662         return NULL;
33663     }
33664     void * _res = NULL;
33665     int _mark = p->mark;
33666     { // 'if' disjunction
33667         if (p->error_indicator) {
33668             p->level--;
33669             return NULL;
33670         }
33671         D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
33672         Token * _keyword;
33673         expr_ty z;
33674         if (
33675             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
33676             &&
33677             (z = disjunction_rule(p))  // disjunction
33678         )
33679         {
33680             D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
33681             _res = z;
33682             if (_res == NULL && PyErr_Occurred()) {
33683                 p->error_indicator = 1;
33684                 p->level--;
33685                 return NULL;
33686             }
33687             goto done;
33688         }
33689         p->mark = _mark;
33690         D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ',
33691                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
33692     }
33693     _res = NULL;
33694   done:
33695     p->level--;
33696     return _res;
33697 }
33698 
33699 // _tmp_190: 'if' disjunction
33700 static void *
_tmp_190_rule(Parser * p)33701 _tmp_190_rule(Parser *p)
33702 {
33703     if (p->level++ == MAXSTACK) {
33704         p->error_indicator = 1;
33705         PyErr_NoMemory();
33706     }
33707     if (p->error_indicator) {
33708         p->level--;
33709         return NULL;
33710     }
33711     void * _res = NULL;
33712     int _mark = p->mark;
33713     { // 'if' disjunction
33714         if (p->error_indicator) {
33715             p->level--;
33716             return NULL;
33717         }
33718         D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
33719         Token * _keyword;
33720         expr_ty z;
33721         if (
33722             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
33723             &&
33724             (z = disjunction_rule(p))  // disjunction
33725         )
33726         {
33727             D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
33728             _res = z;
33729             if (_res == NULL && PyErr_Occurred()) {
33730                 p->error_indicator = 1;
33731                 p->level--;
33732                 return NULL;
33733             }
33734             goto done;
33735         }
33736         p->mark = _mark;
33737         D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ',
33738                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
33739     }
33740     _res = NULL;
33741   done:
33742     p->level--;
33743     return _res;
33744 }
33745 
33746 // _tmp_191: starred_expression | (assignment_expression | expression !':=') !'='
33747 static void *
_tmp_191_rule(Parser * p)33748 _tmp_191_rule(Parser *p)
33749 {
33750     if (p->level++ == MAXSTACK) {
33751         p->error_indicator = 1;
33752         PyErr_NoMemory();
33753     }
33754     if (p->error_indicator) {
33755         p->level--;
33756         return NULL;
33757     }
33758     void * _res = NULL;
33759     int _mark = p->mark;
33760     { // starred_expression
33761         if (p->error_indicator) {
33762             p->level--;
33763             return NULL;
33764         }
33765         D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
33766         expr_ty starred_expression_var;
33767         if (
33768             (starred_expression_var = starred_expression_rule(p))  // starred_expression
33769         )
33770         {
33771             D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
33772             _res = starred_expression_var;
33773             goto done;
33774         }
33775         p->mark = _mark;
33776         D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ',
33777                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
33778     }
33779     { // (assignment_expression | expression !':=') !'='
33780         if (p->error_indicator) {
33781             p->level--;
33782             return NULL;
33783         }
33784         D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
33785         void *_tmp_202_var;
33786         if (
33787             (_tmp_202_var = _tmp_202_rule(p))  // assignment_expression | expression !':='
33788             &&
33789             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
33790         )
33791         {
33792             D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
33793             _res = _tmp_202_var;
33794             goto done;
33795         }
33796         p->mark = _mark;
33797         D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ',
33798                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
33799     }
33800     _res = NULL;
33801   done:
33802     p->level--;
33803     return _res;
33804 }
33805 
33806 // _tmp_192: ',' star_target
33807 static void *
_tmp_192_rule(Parser * p)33808 _tmp_192_rule(Parser *p)
33809 {
33810     if (p->level++ == MAXSTACK) {
33811         p->error_indicator = 1;
33812         PyErr_NoMemory();
33813     }
33814     if (p->error_indicator) {
33815         p->level--;
33816         return NULL;
33817     }
33818     void * _res = NULL;
33819     int _mark = p->mark;
33820     { // ',' star_target
33821         if (p->error_indicator) {
33822             p->level--;
33823             return NULL;
33824         }
33825         D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33826         Token * _literal;
33827         expr_ty c;
33828         if (
33829             (_literal = _PyPegen_expect_token(p, 12))  // token=','
33830             &&
33831             (c = star_target_rule(p))  // star_target
33832         )
33833         {
33834             D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33835             _res = c;
33836             if (_res == NULL && PyErr_Occurred()) {
33837                 p->error_indicator = 1;
33838                 p->level--;
33839                 return NULL;
33840             }
33841             goto done;
33842         }
33843         p->mark = _mark;
33844         D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ',
33845                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
33846     }
33847     _res = NULL;
33848   done:
33849     p->level--;
33850     return _res;
33851 }
33852 
33853 // _tmp_193: ',' star_target
33854 static void *
_tmp_193_rule(Parser * p)33855 _tmp_193_rule(Parser *p)
33856 {
33857     if (p->level++ == MAXSTACK) {
33858         p->error_indicator = 1;
33859         PyErr_NoMemory();
33860     }
33861     if (p->error_indicator) {
33862         p->level--;
33863         return NULL;
33864     }
33865     void * _res = NULL;
33866     int _mark = p->mark;
33867     { // ',' star_target
33868         if (p->error_indicator) {
33869             p->level--;
33870             return NULL;
33871         }
33872         D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33873         Token * _literal;
33874         expr_ty c;
33875         if (
33876             (_literal = _PyPegen_expect_token(p, 12))  // token=','
33877             &&
33878             (c = star_target_rule(p))  // star_target
33879         )
33880         {
33881             D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33882             _res = c;
33883             if (_res == NULL && PyErr_Occurred()) {
33884                 p->error_indicator = 1;
33885                 p->level--;
33886                 return NULL;
33887             }
33888             goto done;
33889         }
33890         p->mark = _mark;
33891         D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ',
33892                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
33893     }
33894     _res = NULL;
33895   done:
33896     p->level--;
33897     return _res;
33898 }
33899 
33900 // _tmp_194: star_targets '='
33901 static void *
_tmp_194_rule(Parser * p)33902 _tmp_194_rule(Parser *p)
33903 {
33904     if (p->level++ == MAXSTACK) {
33905         p->error_indicator = 1;
33906         PyErr_NoMemory();
33907     }
33908     if (p->error_indicator) {
33909         p->level--;
33910         return NULL;
33911     }
33912     void * _res = NULL;
33913     int _mark = p->mark;
33914     { // star_targets '='
33915         if (p->error_indicator) {
33916             p->level--;
33917             return NULL;
33918         }
33919         D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33920         Token * _literal;
33921         expr_ty star_targets_var;
33922         if (
33923             (star_targets_var = star_targets_rule(p))  // star_targets
33924             &&
33925             (_literal = _PyPegen_expect_token(p, 22))  // token='='
33926         )
33927         {
33928             D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33929             _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
33930             goto done;
33931         }
33932         p->mark = _mark;
33933         D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ',
33934                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
33935     }
33936     _res = NULL;
33937   done:
33938     p->level--;
33939     return _res;
33940 }
33941 
33942 // _tmp_195: star_targets '='
33943 static void *
_tmp_195_rule(Parser * p)33944 _tmp_195_rule(Parser *p)
33945 {
33946     if (p->level++ == MAXSTACK) {
33947         p->error_indicator = 1;
33948         PyErr_NoMemory();
33949     }
33950     if (p->error_indicator) {
33951         p->level--;
33952         return NULL;
33953     }
33954     void * _res = NULL;
33955     int _mark = p->mark;
33956     { // star_targets '='
33957         if (p->error_indicator) {
33958             p->level--;
33959             return NULL;
33960         }
33961         D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33962         Token * _literal;
33963         expr_ty star_targets_var;
33964         if (
33965             (star_targets_var = star_targets_rule(p))  // star_targets
33966             &&
33967             (_literal = _PyPegen_expect_token(p, 22))  // token='='
33968         )
33969         {
33970             D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33971             _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
33972             goto done;
33973         }
33974         p->mark = _mark;
33975         D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ',
33976                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
33977     }
33978     _res = NULL;
33979   done:
33980     p->level--;
33981     return _res;
33982 }
33983 
33984 // _tmp_196: ')' | '**'
33985 static void *
_tmp_196_rule(Parser * p)33986 _tmp_196_rule(Parser *p)
33987 {
33988     if (p->level++ == MAXSTACK) {
33989         p->error_indicator = 1;
33990         PyErr_NoMemory();
33991     }
33992     if (p->error_indicator) {
33993         p->level--;
33994         return NULL;
33995     }
33996     void * _res = NULL;
33997     int _mark = p->mark;
33998     { // ')'
33999         if (p->error_indicator) {
34000             p->level--;
34001             return NULL;
34002         }
34003         D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
34004         Token * _literal;
34005         if (
34006             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
34007         )
34008         {
34009             D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
34010             _res = _literal;
34011             goto done;
34012         }
34013         p->mark = _mark;
34014         D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ',
34015                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34016     }
34017     { // '**'
34018         if (p->error_indicator) {
34019             p->level--;
34020             return NULL;
34021         }
34022         D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
34023         Token * _literal;
34024         if (
34025             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
34026         )
34027         {
34028             D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
34029             _res = _literal;
34030             goto done;
34031         }
34032         p->mark = _mark;
34033         D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ',
34034                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
34035     }
34036     _res = NULL;
34037   done:
34038     p->level--;
34039     return _res;
34040 }
34041 
34042 // _tmp_197: ':' | '**'
34043 static void *
_tmp_197_rule(Parser * p)34044 _tmp_197_rule(Parser *p)
34045 {
34046     if (p->level++ == MAXSTACK) {
34047         p->error_indicator = 1;
34048         PyErr_NoMemory();
34049     }
34050     if (p->error_indicator) {
34051         p->level--;
34052         return NULL;
34053     }
34054     void * _res = NULL;
34055     int _mark = p->mark;
34056     { // ':'
34057         if (p->error_indicator) {
34058             p->level--;
34059             return NULL;
34060         }
34061         D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
34062         Token * _literal;
34063         if (
34064             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
34065         )
34066         {
34067             D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
34068             _res = _literal;
34069             goto done;
34070         }
34071         p->mark = _mark;
34072         D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ',
34073                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
34074     }
34075     { // '**'
34076         if (p->error_indicator) {
34077             p->level--;
34078             return NULL;
34079         }
34080         D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
34081         Token * _literal;
34082         if (
34083             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
34084         )
34085         {
34086             D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
34087             _res = _literal;
34088             goto done;
34089         }
34090         p->mark = _mark;
34091         D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ',
34092                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
34093     }
34094     _res = NULL;
34095   done:
34096     p->level--;
34097     return _res;
34098 }
34099 
34100 // _tmp_198: expression ['as' star_target]
34101 static void *
_tmp_198_rule(Parser * p)34102 _tmp_198_rule(Parser *p)
34103 {
34104     if (p->level++ == MAXSTACK) {
34105         p->error_indicator = 1;
34106         PyErr_NoMemory();
34107     }
34108     if (p->error_indicator) {
34109         p->level--;
34110         return NULL;
34111     }
34112     void * _res = NULL;
34113     int _mark = p->mark;
34114     { // expression ['as' star_target]
34115         if (p->error_indicator) {
34116             p->level--;
34117             return NULL;
34118         }
34119         D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
34120         void *_opt_var;
34121         UNUSED(_opt_var); // Silence compiler warnings
34122         expr_ty expression_var;
34123         if (
34124             (expression_var = expression_rule(p))  // expression
34125             &&
34126             (_opt_var = _tmp_203_rule(p), !p->error_indicator)  // ['as' star_target]
34127         )
34128         {
34129             D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
34130             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
34131             goto done;
34132         }
34133         p->mark = _mark;
34134         D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ',
34135                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
34136     }
34137     _res = NULL;
34138   done:
34139     p->level--;
34140     return _res;
34141 }
34142 
34143 // _tmp_199: expressions ['as' star_target]
34144 static void *
_tmp_199_rule(Parser * p)34145 _tmp_199_rule(Parser *p)
34146 {
34147     if (p->level++ == MAXSTACK) {
34148         p->error_indicator = 1;
34149         PyErr_NoMemory();
34150     }
34151     if (p->error_indicator) {
34152         p->level--;
34153         return NULL;
34154     }
34155     void * _res = NULL;
34156     int _mark = p->mark;
34157     { // expressions ['as' star_target]
34158         if (p->error_indicator) {
34159             p->level--;
34160             return NULL;
34161         }
34162         D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
34163         void *_opt_var;
34164         UNUSED(_opt_var); // Silence compiler warnings
34165         expr_ty expressions_var;
34166         if (
34167             (expressions_var = expressions_rule(p))  // expressions
34168             &&
34169             (_opt_var = _tmp_204_rule(p), !p->error_indicator)  // ['as' star_target]
34170         )
34171         {
34172             D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
34173             _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
34174             goto done;
34175         }
34176         p->mark = _mark;
34177         D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ',
34178                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
34179     }
34180     _res = NULL;
34181   done:
34182     p->level--;
34183     return _res;
34184 }
34185 
34186 // _tmp_200: expression ['as' star_target]
34187 static void *
_tmp_200_rule(Parser * p)34188 _tmp_200_rule(Parser *p)
34189 {
34190     if (p->level++ == MAXSTACK) {
34191         p->error_indicator = 1;
34192         PyErr_NoMemory();
34193     }
34194     if (p->error_indicator) {
34195         p->level--;
34196         return NULL;
34197     }
34198     void * _res = NULL;
34199     int _mark = p->mark;
34200     { // expression ['as' star_target]
34201         if (p->error_indicator) {
34202             p->level--;
34203             return NULL;
34204         }
34205         D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
34206         void *_opt_var;
34207         UNUSED(_opt_var); // Silence compiler warnings
34208         expr_ty expression_var;
34209         if (
34210             (expression_var = expression_rule(p))  // expression
34211             &&
34212             (_opt_var = _tmp_205_rule(p), !p->error_indicator)  // ['as' star_target]
34213         )
34214         {
34215             D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
34216             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
34217             goto done;
34218         }
34219         p->mark = _mark;
34220         D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ',
34221                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
34222     }
34223     _res = NULL;
34224   done:
34225     p->level--;
34226     return _res;
34227 }
34228 
34229 // _tmp_201: expressions ['as' star_target]
34230 static void *
_tmp_201_rule(Parser * p)34231 _tmp_201_rule(Parser *p)
34232 {
34233     if (p->level++ == MAXSTACK) {
34234         p->error_indicator = 1;
34235         PyErr_NoMemory();
34236     }
34237     if (p->error_indicator) {
34238         p->level--;
34239         return NULL;
34240     }
34241     void * _res = NULL;
34242     int _mark = p->mark;
34243     { // expressions ['as' star_target]
34244         if (p->error_indicator) {
34245             p->level--;
34246             return NULL;
34247         }
34248         D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
34249         void *_opt_var;
34250         UNUSED(_opt_var); // Silence compiler warnings
34251         expr_ty expressions_var;
34252         if (
34253             (expressions_var = expressions_rule(p))  // expressions
34254             &&
34255             (_opt_var = _tmp_206_rule(p), !p->error_indicator)  // ['as' star_target]
34256         )
34257         {
34258             D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
34259             _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
34260             goto done;
34261         }
34262         p->mark = _mark;
34263         D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ',
34264                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
34265     }
34266     _res = NULL;
34267   done:
34268     p->level--;
34269     return _res;
34270 }
34271 
34272 // _tmp_202: assignment_expression | expression !':='
34273 static void *
_tmp_202_rule(Parser * p)34274 _tmp_202_rule(Parser *p)
34275 {
34276     if (p->level++ == MAXSTACK) {
34277         p->error_indicator = 1;
34278         PyErr_NoMemory();
34279     }
34280     if (p->error_indicator) {
34281         p->level--;
34282         return NULL;
34283     }
34284     void * _res = NULL;
34285     int _mark = p->mark;
34286     { // assignment_expression
34287         if (p->error_indicator) {
34288             p->level--;
34289             return NULL;
34290         }
34291         D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
34292         expr_ty assignment_expression_var;
34293         if (
34294             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
34295         )
34296         {
34297             D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
34298             _res = assignment_expression_var;
34299             goto done;
34300         }
34301         p->mark = _mark;
34302         D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ',
34303                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
34304     }
34305     { // expression !':='
34306         if (p->error_indicator) {
34307             p->level--;
34308             return NULL;
34309         }
34310         D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
34311         expr_ty expression_var;
34312         if (
34313             (expression_var = expression_rule(p))  // expression
34314             &&
34315             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
34316         )
34317         {
34318             D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
34319             _res = expression_var;
34320             goto done;
34321         }
34322         p->mark = _mark;
34323         D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ',
34324                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
34325     }
34326     _res = NULL;
34327   done:
34328     p->level--;
34329     return _res;
34330 }
34331 
34332 // _tmp_203: 'as' star_target
34333 static void *
_tmp_203_rule(Parser * p)34334 _tmp_203_rule(Parser *p)
34335 {
34336     if (p->level++ == MAXSTACK) {
34337         p->error_indicator = 1;
34338         PyErr_NoMemory();
34339     }
34340     if (p->error_indicator) {
34341         p->level--;
34342         return NULL;
34343     }
34344     void * _res = NULL;
34345     int _mark = p->mark;
34346     { // 'as' star_target
34347         if (p->error_indicator) {
34348             p->level--;
34349             return NULL;
34350         }
34351         D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
34352         Token * _keyword;
34353         expr_ty star_target_var;
34354         if (
34355             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
34356             &&
34357             (star_target_var = star_target_rule(p))  // star_target
34358         )
34359         {
34360             D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
34361             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
34362             goto done;
34363         }
34364         p->mark = _mark;
34365         D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ',
34366                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
34367     }
34368     _res = NULL;
34369   done:
34370     p->level--;
34371     return _res;
34372 }
34373 
34374 // _tmp_204: 'as' star_target
34375 static void *
_tmp_204_rule(Parser * p)34376 _tmp_204_rule(Parser *p)
34377 {
34378     if (p->level++ == MAXSTACK) {
34379         p->error_indicator = 1;
34380         PyErr_NoMemory();
34381     }
34382     if (p->error_indicator) {
34383         p->level--;
34384         return NULL;
34385     }
34386     void * _res = NULL;
34387     int _mark = p->mark;
34388     { // 'as' star_target
34389         if (p->error_indicator) {
34390             p->level--;
34391             return NULL;
34392         }
34393         D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
34394         Token * _keyword;
34395         expr_ty star_target_var;
34396         if (
34397             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
34398             &&
34399             (star_target_var = star_target_rule(p))  // star_target
34400         )
34401         {
34402             D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
34403             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
34404             goto done;
34405         }
34406         p->mark = _mark;
34407         D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ',
34408                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
34409     }
34410     _res = NULL;
34411   done:
34412     p->level--;
34413     return _res;
34414 }
34415 
34416 // _tmp_205: 'as' star_target
34417 static void *
_tmp_205_rule(Parser * p)34418 _tmp_205_rule(Parser *p)
34419 {
34420     if (p->level++ == MAXSTACK) {
34421         p->error_indicator = 1;
34422         PyErr_NoMemory();
34423     }
34424     if (p->error_indicator) {
34425         p->level--;
34426         return NULL;
34427     }
34428     void * _res = NULL;
34429     int _mark = p->mark;
34430     { // 'as' star_target
34431         if (p->error_indicator) {
34432             p->level--;
34433             return NULL;
34434         }
34435         D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
34436         Token * _keyword;
34437         expr_ty star_target_var;
34438         if (
34439             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
34440             &&
34441             (star_target_var = star_target_rule(p))  // star_target
34442         )
34443         {
34444             D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
34445             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
34446             goto done;
34447         }
34448         p->mark = _mark;
34449         D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ',
34450                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
34451     }
34452     _res = NULL;
34453   done:
34454     p->level--;
34455     return _res;
34456 }
34457 
34458 // _tmp_206: 'as' star_target
34459 static void *
_tmp_206_rule(Parser * p)34460 _tmp_206_rule(Parser *p)
34461 {
34462     if (p->level++ == MAXSTACK) {
34463         p->error_indicator = 1;
34464         PyErr_NoMemory();
34465     }
34466     if (p->error_indicator) {
34467         p->level--;
34468         return NULL;
34469     }
34470     void * _res = NULL;
34471     int _mark = p->mark;
34472     { // 'as' star_target
34473         if (p->error_indicator) {
34474             p->level--;
34475             return NULL;
34476         }
34477         D(fprintf(stderr, "%*c> _tmp_206[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
34478         Token * _keyword;
34479         expr_ty star_target_var;
34480         if (
34481             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
34482             &&
34483             (star_target_var = star_target_rule(p))  // star_target
34484         )
34485         {
34486             D(fprintf(stderr, "%*c+ _tmp_206[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
34487             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
34488             goto done;
34489         }
34490         p->mark = _mark;
34491         D(fprintf(stderr, "%*c%s _tmp_206[%d-%d]: %s failed!\n", p->level, ' ',
34492                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
34493     }
34494     _res = NULL;
34495   done:
34496     p->level--;
34497     return _res;
34498 }
34499 
34500 void *
_PyPegen_parse(Parser * p)34501 _PyPegen_parse(Parser *p)
34502 {
34503     // Initialize keywords
34504     p->keywords = reserved_keywords;
34505     p->n_keyword_lists = n_keyword_lists;
34506     p->soft_keywords = soft_keywords;
34507 
34508     // Run parser
34509     void *result = NULL;
34510     if (p->start_rule == Py_file_input) {
34511         result = file_rule(p);
34512     } else if (p->start_rule == Py_single_input) {
34513         result = interactive_rule(p);
34514     } else if (p->start_rule == Py_eval_input) {
34515         result = eval_rule(p);
34516     } else if (p->start_rule == Py_func_type_input) {
34517         result = func_type_rule(p);
34518     } else if (p->start_rule == Py_fstring_input) {
34519         result = fstring_rule(p);
34520     }
34521 
34522     return result;
34523 }
34524 
34525 // The end
34526