blob: 4f13bf772f261a29996226e6d318be82e882cf2d [file] [log] [blame]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001// @generated by pegen.py from ./Grammar/python.gram
2#include "pegen.h"
Pablo Galindo800a35c62020-05-25 18:38:45 +01003
Pablo Galindodeb43552020-05-25 20:17:12 +01004#if defined(Py_DEBUG) && defined(Py_BUILD_CORE)
Pablo Galindo800a35c62020-05-25 18:38:45 +01005extern int Py_DebugFlag;
6#define D(x) if (Py_DebugFlag) x;
7#else
8#define D(x)
9#endif
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010static const int n_keyword_lists = 15;
11static KeywordToken *reserved_keywords[] = {
12 NULL,
13 NULL,
14 (KeywordToken[]) {
15 {"if", 510},
16 {"in", 518},
17 {"is", 526},
18 {"as", 531},
19 {"or", 532},
20 {NULL, -1},
21 },
22 (KeywordToken[]) {
23 {"del", 503},
24 {"try", 511},
25 {"for", 517},
26 {"def", 522},
27 {"not", 525},
28 {"and", 533},
29 {NULL, -1},
30 },
31 (KeywordToken[]) {
32 {"pass", 502},
33 {"from", 514},
34 {"elif", 515},
35 {"else", 516},
36 {"with", 519},
37 {"True", 527},
38 {"None", 529},
39 {NULL, -1},
40 },
41 (KeywordToken[]) {
42 {"raise", 501},
43 {"yield", 504},
44 {"break", 506},
45 {"while", 512},
46 {"class", 523},
47 {"False", 528},
48 {NULL, -1},
49 },
50 (KeywordToken[]) {
51 {"return", 500},
52 {"assert", 505},
53 {"global", 508},
54 {"import", 513},
55 {"except", 520},
56 {"lambda", 524},
57 {NULL, -1},
58 },
59 (KeywordToken[]) {
60 {"finally", 521},
61 {NULL, -1},
62 },
63 (KeywordToken[]) {
64 {"continue", 507},
65 {"nonlocal", 509},
66 {NULL, -1},
67 },
68 NULL,
69 NULL,
70 NULL,
71 NULL,
72 NULL,
73 (KeywordToken[]) {
74 {"__new_parser__", 530},
75 {NULL, -1},
76 },
77};
78#define file_type 1000
79#define interactive_type 1001
80#define eval_type 1002
Guido van Rossumc001c092020-04-30 12:12:19 -070081#define func_type_type 1003
82#define fstring_type 1004
83#define type_expressions_type 1005
84#define statements_type 1006
85#define statement_type 1007
86#define statement_newline_type 1008
87#define simple_stmt_type 1009
88#define small_stmt_type 1010
89#define compound_stmt_type 1011
90#define assignment_type 1012
91#define augassign_type 1013
92#define global_stmt_type 1014
93#define nonlocal_stmt_type 1015
94#define yield_stmt_type 1016
95#define assert_stmt_type 1017
96#define del_stmt_type 1018
97#define import_stmt_type 1019
98#define import_name_type 1020
99#define import_from_type 1021
100#define import_from_targets_type 1022
101#define import_from_as_names_type 1023
102#define import_from_as_name_type 1024
103#define dotted_as_names_type 1025
104#define dotted_as_name_type 1026
105#define dotted_name_type 1027 // Left-recursive
106#define if_stmt_type 1028
107#define elif_stmt_type 1029
108#define else_block_type 1030
109#define while_stmt_type 1031
110#define for_stmt_type 1032
111#define with_stmt_type 1033
112#define with_item_type 1034
113#define try_stmt_type 1035
114#define except_block_type 1036
115#define finally_block_type 1037
116#define return_stmt_type 1038
117#define raise_stmt_type 1039
118#define function_def_type 1040
119#define function_def_raw_type 1041
120#define func_type_comment_type 1042
121#define params_type 1043
122#define parameters_type 1044
123#define slash_no_default_type 1045
124#define slash_with_default_type 1046
125#define star_etc_type 1047
126#define kwds_type 1048
127#define param_no_default_type 1049
128#define param_with_default_type 1050
129#define param_maybe_default_type 1051
130#define param_type 1052
131#define annotation_type 1053
132#define default_type 1054
133#define decorators_type 1055
134#define class_def_type 1056
135#define class_def_raw_type 1057
136#define block_type 1058
137#define expressions_list_type 1059
138#define star_expressions_type 1060
139#define star_expression_type 1061
140#define star_named_expressions_type 1062
141#define star_named_expression_type 1063
142#define named_expression_type 1064
143#define annotated_rhs_type 1065
144#define expressions_type 1066
145#define expression_type 1067
146#define lambdef_type 1068
Pablo Galindoc6483c92020-06-10 14:07:06 +0100147#define lambda_params_type 1069
148#define lambda_parameters_type 1070
149#define lambda_slash_no_default_type 1071
150#define lambda_slash_with_default_type 1072
151#define lambda_star_etc_type 1073
152#define lambda_kwds_type 1074
153#define lambda_param_no_default_type 1075
154#define lambda_param_with_default_type 1076
155#define lambda_param_maybe_default_type 1077
156#define lambda_param_type 1078
157#define disjunction_type 1079
158#define conjunction_type 1080
159#define inversion_type 1081
160#define comparison_type 1082
161#define compare_op_bitwise_or_pair_type 1083
162#define eq_bitwise_or_type 1084
163#define noteq_bitwise_or_type 1085
164#define lte_bitwise_or_type 1086
165#define lt_bitwise_or_type 1087
166#define gte_bitwise_or_type 1088
167#define gt_bitwise_or_type 1089
168#define notin_bitwise_or_type 1090
169#define in_bitwise_or_type 1091
170#define isnot_bitwise_or_type 1092
171#define is_bitwise_or_type 1093
172#define bitwise_or_type 1094 // Left-recursive
173#define bitwise_xor_type 1095 // Left-recursive
174#define bitwise_and_type 1096 // Left-recursive
175#define shift_expr_type 1097 // Left-recursive
176#define sum_type 1098 // Left-recursive
177#define term_type 1099 // Left-recursive
178#define factor_type 1100
179#define power_type 1101
180#define await_primary_type 1102
181#define primary_type 1103 // Left-recursive
182#define slices_type 1104
183#define slice_type 1105
184#define atom_type 1106
185#define strings_type 1107
186#define list_type 1108
187#define listcomp_type 1109
188#define tuple_type 1110
189#define group_type 1111
190#define genexp_type 1112
191#define set_type 1113
192#define setcomp_type 1114
193#define dict_type 1115
194#define dictcomp_type 1116
195#define double_starred_kvpairs_type 1117
196#define double_starred_kvpair_type 1118
197#define kvpair_type 1119
198#define for_if_clauses_type 1120
199#define for_if_clause_type 1121
200#define yield_expr_type 1122
201#define arguments_type 1123
202#define args_type 1124
203#define kwargs_type 1125
204#define starred_expression_type 1126
205#define kwarg_or_starred_type 1127
206#define kwarg_or_double_starred_type 1128
207#define star_targets_type 1129
208#define star_targets_seq_type 1130
209#define star_target_type 1131
210#define star_atom_type 1132
211#define single_target_type 1133
212#define single_subscript_attribute_target_type 1134
213#define del_targets_type 1135
214#define del_target_type 1136
215#define del_t_atom_type 1137
216#define del_target_end_type 1138
217#define targets_type 1139
218#define target_type 1140
219#define t_primary_type 1141 // Left-recursive
220#define t_lookahead_type 1142
221#define t_atom_type 1143
222#define incorrect_arguments_type 1144
223#define invalid_kwarg_type 1145
224#define invalid_named_expression_type 1146
225#define invalid_assignment_type 1147
226#define invalid_block_type 1148
227#define invalid_comprehension_type 1149
228#define invalid_dict_comprehension_type 1150
229#define invalid_parameters_type 1151
230#define invalid_lambda_parameters_type 1152
231#define invalid_star_etc_type 1153
232#define invalid_lambda_star_etc_type 1154
233#define invalid_double_type_comments_type 1155
234#define invalid_del_target_type 1156
235#define invalid_import_from_targets_type 1157
236#define _loop0_1_type 1158
237#define _loop0_2_type 1159
238#define _loop0_4_type 1160
239#define _gather_3_type 1161
240#define _loop0_6_type 1162
241#define _gather_5_type 1163
242#define _loop0_8_type 1164
243#define _gather_7_type 1165
244#define _loop0_10_type 1166
245#define _gather_9_type 1167
246#define _loop1_11_type 1168
247#define _loop0_13_type 1169
248#define _gather_12_type 1170
249#define _tmp_14_type 1171
250#define _tmp_15_type 1172
251#define _tmp_16_type 1173
252#define _tmp_17_type 1174
253#define _tmp_18_type 1175
254#define _tmp_19_type 1176
255#define _tmp_20_type 1177
256#define _tmp_21_type 1178
257#define _loop1_22_type 1179
258#define _tmp_23_type 1180
259#define _tmp_24_type 1181
260#define _loop0_26_type 1182
261#define _gather_25_type 1183
262#define _loop0_28_type 1184
263#define _gather_27_type 1185
264#define _tmp_29_type 1186
265#define _loop0_30_type 1187
266#define _loop1_31_type 1188
267#define _loop0_33_type 1189
268#define _gather_32_type 1190
269#define _tmp_34_type 1191
270#define _loop0_36_type 1192
271#define _gather_35_type 1193
272#define _tmp_37_type 1194
273#define _loop0_39_type 1195
274#define _gather_38_type 1196
275#define _loop0_41_type 1197
276#define _gather_40_type 1198
277#define _loop0_43_type 1199
278#define _gather_42_type 1200
279#define _loop0_45_type 1201
280#define _gather_44_type 1202
281#define _tmp_46_type 1203
282#define _loop1_47_type 1204
283#define _tmp_48_type 1205
284#define _tmp_49_type 1206
285#define _tmp_50_type 1207
286#define _tmp_51_type 1208
287#define _tmp_52_type 1209
288#define _loop0_53_type 1210
289#define _loop0_54_type 1211
290#define _loop0_55_type 1212
291#define _loop1_56_type 1213
292#define _loop0_57_type 1214
293#define _loop1_58_type 1215
294#define _loop1_59_type 1216
295#define _loop1_60_type 1217
296#define _loop0_61_type 1218
297#define _loop1_62_type 1219
298#define _loop0_63_type 1220
299#define _loop1_64_type 1221
300#define _loop0_65_type 1222
301#define _loop1_66_type 1223
302#define _loop1_67_type 1224
303#define _tmp_68_type 1225
304#define _loop0_70_type 1226
305#define _gather_69_type 1227
306#define _loop1_71_type 1228
307#define _loop0_73_type 1229
308#define _gather_72_type 1230
309#define _loop1_74_type 1231
310#define _loop0_75_type 1232
311#define _loop0_76_type 1233
312#define _loop0_77_type 1234
313#define _loop1_78_type 1235
314#define _loop0_79_type 1236
315#define _loop1_80_type 1237
316#define _loop1_81_type 1238
317#define _loop1_82_type 1239
318#define _loop0_83_type 1240
319#define _loop1_84_type 1241
320#define _loop0_85_type 1242
321#define _loop1_86_type 1243
322#define _loop0_87_type 1244
323#define _loop1_88_type 1245
324#define _loop1_89_type 1246
325#define _loop1_90_type 1247
326#define _loop1_91_type 1248
327#define _tmp_92_type 1249
328#define _loop0_94_type 1250
329#define _gather_93_type 1251
330#define _tmp_95_type 1252
331#define _tmp_96_type 1253
332#define _tmp_97_type 1254
333#define _tmp_98_type 1255
334#define _loop1_99_type 1256
335#define _tmp_100_type 1257
336#define _tmp_101_type 1258
337#define _loop0_103_type 1259
338#define _gather_102_type 1260
339#define _loop1_104_type 1261
340#define _loop0_105_type 1262
341#define _loop0_106_type 1263
342#define _tmp_107_type 1264
343#define _tmp_108_type 1265
344#define _loop0_110_type 1266
345#define _gather_109_type 1267
346#define _loop0_112_type 1268
347#define _gather_111_type 1269
348#define _loop0_114_type 1270
349#define _gather_113_type 1271
350#define _loop0_116_type 1272
351#define _gather_115_type 1273
352#define _loop0_117_type 1274
353#define _loop0_119_type 1275
354#define _gather_118_type 1276
355#define _tmp_120_type 1277
356#define _loop0_122_type 1278
357#define _gather_121_type 1279
358#define _loop0_124_type 1280
359#define _gather_123_type 1281
360#define _tmp_125_type 1282
361#define _loop0_126_type 1283
362#define _tmp_127_type 1284
363#define _loop0_128_type 1285
364#define _loop0_129_type 1286
365#define _tmp_130_type 1287
366#define _tmp_131_type 1288
367#define _loop0_132_type 1289
368#define _tmp_133_type 1290
369#define _loop0_134_type 1291
370#define _tmp_135_type 1292
371#define _tmp_136_type 1293
372#define _tmp_137_type 1294
373#define _tmp_138_type 1295
374#define _tmp_139_type 1296
375#define _tmp_140_type 1297
376#define _tmp_141_type 1298
377#define _tmp_142_type 1299
378#define _tmp_143_type 1300
379#define _tmp_144_type 1301
380#define _tmp_145_type 1302
381#define _tmp_146_type 1303
382#define _tmp_147_type 1304
383#define _tmp_148_type 1305
384#define _tmp_149_type 1306
385#define _tmp_150_type 1307
386#define _loop1_151_type 1308
387#define _loop1_152_type 1309
388#define _tmp_153_type 1310
389#define _tmp_154_type 1311
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100390
391static mod_ty file_rule(Parser *p);
392static mod_ty interactive_rule(Parser *p);
393static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700394static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100395static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700396static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100397static asdl_seq* statements_rule(Parser *p);
398static asdl_seq* statement_rule(Parser *p);
399static asdl_seq* statement_newline_rule(Parser *p);
400static asdl_seq* simple_stmt_rule(Parser *p);
401static stmt_ty small_stmt_rule(Parser *p);
402static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300403static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100404static AugOperator* augassign_rule(Parser *p);
405static stmt_ty global_stmt_rule(Parser *p);
406static stmt_ty nonlocal_stmt_rule(Parser *p);
407static stmt_ty yield_stmt_rule(Parser *p);
408static stmt_ty assert_stmt_rule(Parser *p);
409static stmt_ty del_stmt_rule(Parser *p);
410static stmt_ty import_stmt_rule(Parser *p);
411static stmt_ty import_name_rule(Parser *p);
412static stmt_ty import_from_rule(Parser *p);
413static asdl_seq* import_from_targets_rule(Parser *p);
414static asdl_seq* import_from_as_names_rule(Parser *p);
415static alias_ty import_from_as_name_rule(Parser *p);
416static asdl_seq* dotted_as_names_rule(Parser *p);
417static alias_ty dotted_as_name_rule(Parser *p);
418static expr_ty dotted_name_rule(Parser *p);
419static stmt_ty if_stmt_rule(Parser *p);
420static stmt_ty elif_stmt_rule(Parser *p);
421static asdl_seq* else_block_rule(Parser *p);
422static stmt_ty while_stmt_rule(Parser *p);
423static stmt_ty for_stmt_rule(Parser *p);
424static stmt_ty with_stmt_rule(Parser *p);
425static withitem_ty with_item_rule(Parser *p);
426static stmt_ty try_stmt_rule(Parser *p);
427static excepthandler_ty except_block_rule(Parser *p);
428static asdl_seq* finally_block_rule(Parser *p);
429static stmt_ty return_stmt_rule(Parser *p);
430static stmt_ty raise_stmt_rule(Parser *p);
431static stmt_ty function_def_rule(Parser *p);
432static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100433static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100434static arguments_ty params_rule(Parser *p);
435static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700436static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100437static SlashWithDefault* slash_with_default_rule(Parser *p);
438static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100439static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700440static arg_ty param_no_default_rule(Parser *p);
441static NameDefaultPair* param_with_default_rule(Parser *p);
442static NameDefaultPair* param_maybe_default_rule(Parser *p);
443static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100444static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700445static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100446static asdl_seq* decorators_rule(Parser *p);
447static stmt_ty class_def_rule(Parser *p);
448static stmt_ty class_def_raw_rule(Parser *p);
449static asdl_seq* block_rule(Parser *p);
450static asdl_seq* expressions_list_rule(Parser *p);
451static expr_ty star_expressions_rule(Parser *p);
452static expr_ty star_expression_rule(Parser *p);
453static asdl_seq* star_named_expressions_rule(Parser *p);
454static expr_ty star_named_expression_rule(Parser *p);
455static expr_ty named_expression_rule(Parser *p);
456static expr_ty annotated_rhs_rule(Parser *p);
457static expr_ty expressions_rule(Parser *p);
458static expr_ty expression_rule(Parser *p);
459static expr_ty lambdef_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100460static arguments_ty lambda_params_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100461static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700462static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100463static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
464static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100465static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700466static arg_ty lambda_param_no_default_rule(Parser *p);
467static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
468static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
469static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100470static expr_ty disjunction_rule(Parser *p);
471static expr_ty conjunction_rule(Parser *p);
472static expr_ty inversion_rule(Parser *p);
473static expr_ty comparison_rule(Parser *p);
474static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
475static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
476static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
477static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
478static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
479static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
480static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
481static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
482static CmpopExprPair* in_bitwise_or_rule(Parser *p);
483static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
484static CmpopExprPair* is_bitwise_or_rule(Parser *p);
485static expr_ty bitwise_or_rule(Parser *p);
486static expr_ty bitwise_xor_rule(Parser *p);
487static expr_ty bitwise_and_rule(Parser *p);
488static expr_ty shift_expr_rule(Parser *p);
489static expr_ty sum_rule(Parser *p);
490static expr_ty term_rule(Parser *p);
491static expr_ty factor_rule(Parser *p);
492static expr_ty power_rule(Parser *p);
493static expr_ty await_primary_rule(Parser *p);
494static expr_ty primary_rule(Parser *p);
495static expr_ty slices_rule(Parser *p);
496static expr_ty slice_rule(Parser *p);
497static expr_ty atom_rule(Parser *p);
498static expr_ty strings_rule(Parser *p);
499static expr_ty list_rule(Parser *p);
500static expr_ty listcomp_rule(Parser *p);
501static expr_ty tuple_rule(Parser *p);
502static expr_ty group_rule(Parser *p);
503static expr_ty genexp_rule(Parser *p);
504static expr_ty set_rule(Parser *p);
505static expr_ty setcomp_rule(Parser *p);
506static expr_ty dict_rule(Parser *p);
507static expr_ty dictcomp_rule(Parser *p);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +0300508static asdl_seq* double_starred_kvpairs_rule(Parser *p);
509static KeyValuePair* double_starred_kvpair_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100510static KeyValuePair* kvpair_rule(Parser *p);
511static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300512static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100513static expr_ty yield_expr_rule(Parser *p);
514static expr_ty arguments_rule(Parser *p);
515static expr_ty args_rule(Parser *p);
516static asdl_seq* kwargs_rule(Parser *p);
517static expr_ty starred_expression_rule(Parser *p);
518static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
519static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
520static expr_ty star_targets_rule(Parser *p);
521static asdl_seq* star_targets_seq_rule(Parser *p);
522static expr_ty star_target_rule(Parser *p);
523static expr_ty star_atom_rule(Parser *p);
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300524static expr_ty single_target_rule(Parser *p);
525static expr_ty single_subscript_attribute_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100526static asdl_seq* del_targets_rule(Parser *p);
527static expr_ty del_target_rule(Parser *p);
528static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700529static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100530static asdl_seq* targets_rule(Parser *p);
531static expr_ty target_rule(Parser *p);
532static expr_ty t_primary_rule(Parser *p);
533static void *t_lookahead_rule(Parser *p);
534static expr_ty t_atom_rule(Parser *p);
535static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300536static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100537static void *invalid_named_expression_rule(Parser *p);
538static void *invalid_assignment_rule(Parser *p);
539static void *invalid_block_rule(Parser *p);
540static void *invalid_comprehension_rule(Parser *p);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +0300541static void *invalid_dict_comprehension_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100542static void *invalid_parameters_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100543static void *invalid_lambda_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300544static void *invalid_star_etc_rule(Parser *p);
545static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700546static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700547static void *invalid_del_target_rule(Parser *p);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +0300548static void *invalid_import_from_targets_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100549static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700550static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100551static asdl_seq *_loop0_4_rule(Parser *p);
552static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700553static asdl_seq *_loop0_6_rule(Parser *p);
554static asdl_seq *_gather_5_rule(Parser *p);
555static asdl_seq *_loop0_8_rule(Parser *p);
556static asdl_seq *_gather_7_rule(Parser *p);
557static asdl_seq *_loop0_10_rule(Parser *p);
558static asdl_seq *_gather_9_rule(Parser *p);
559static asdl_seq *_loop1_11_rule(Parser *p);
560static asdl_seq *_loop0_13_rule(Parser *p);
561static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100562static void *_tmp_14_rule(Parser *p);
563static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700564static void *_tmp_16_rule(Parser *p);
565static void *_tmp_17_rule(Parser *p);
566static void *_tmp_18_rule(Parser *p);
567static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100568static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700569static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100570static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700571static void *_tmp_23_rule(Parser *p);
572static void *_tmp_24_rule(Parser *p);
573static asdl_seq *_loop0_26_rule(Parser *p);
574static asdl_seq *_gather_25_rule(Parser *p);
575static asdl_seq *_loop0_28_rule(Parser *p);
576static asdl_seq *_gather_27_rule(Parser *p);
577static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100578static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700579static asdl_seq *_loop1_31_rule(Parser *p);
580static asdl_seq *_loop0_33_rule(Parser *p);
581static asdl_seq *_gather_32_rule(Parser *p);
582static void *_tmp_34_rule(Parser *p);
583static asdl_seq *_loop0_36_rule(Parser *p);
584static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100585static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700586static asdl_seq *_loop0_39_rule(Parser *p);
587static asdl_seq *_gather_38_rule(Parser *p);
588static asdl_seq *_loop0_41_rule(Parser *p);
589static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300590static asdl_seq *_loop0_43_rule(Parser *p);
591static asdl_seq *_gather_42_rule(Parser *p);
592static asdl_seq *_loop0_45_rule(Parser *p);
593static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100594static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300595static asdl_seq *_loop1_47_rule(Parser *p);
596static void *_tmp_48_rule(Parser *p);
597static void *_tmp_49_rule(Parser *p);
598static void *_tmp_50_rule(Parser *p);
599static void *_tmp_51_rule(Parser *p);
600static void *_tmp_52_rule(Parser *p);
601static asdl_seq *_loop0_53_rule(Parser *p);
602static asdl_seq *_loop0_54_rule(Parser *p);
603static asdl_seq *_loop0_55_rule(Parser *p);
604static asdl_seq *_loop1_56_rule(Parser *p);
605static asdl_seq *_loop0_57_rule(Parser *p);
606static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700607static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300608static asdl_seq *_loop1_60_rule(Parser *p);
609static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700610static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300611static asdl_seq *_loop0_63_rule(Parser *p);
612static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700613static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700614static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300615static asdl_seq *_loop1_67_rule(Parser *p);
616static void *_tmp_68_rule(Parser *p);
617static asdl_seq *_loop0_70_rule(Parser *p);
618static asdl_seq *_gather_69_rule(Parser *p);
619static asdl_seq *_loop1_71_rule(Parser *p);
620static asdl_seq *_loop0_73_rule(Parser *p);
621static asdl_seq *_gather_72_rule(Parser *p);
622static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700623static asdl_seq *_loop0_75_rule(Parser *p);
624static asdl_seq *_loop0_76_rule(Parser *p);
625static asdl_seq *_loop0_77_rule(Parser *p);
626static asdl_seq *_loop1_78_rule(Parser *p);
627static asdl_seq *_loop0_79_rule(Parser *p);
628static asdl_seq *_loop1_80_rule(Parser *p);
629static asdl_seq *_loop1_81_rule(Parser *p);
630static asdl_seq *_loop1_82_rule(Parser *p);
631static asdl_seq *_loop0_83_rule(Parser *p);
632static asdl_seq *_loop1_84_rule(Parser *p);
633static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300634static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700635static asdl_seq *_loop0_87_rule(Parser *p);
636static asdl_seq *_loop1_88_rule(Parser *p);
637static asdl_seq *_loop1_89_rule(Parser *p);
638static asdl_seq *_loop1_90_rule(Parser *p);
639static asdl_seq *_loop1_91_rule(Parser *p);
640static void *_tmp_92_rule(Parser *p);
641static asdl_seq *_loop0_94_rule(Parser *p);
642static asdl_seq *_gather_93_rule(Parser *p);
643static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700644static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700645static void *_tmp_97_rule(Parser *p);
646static void *_tmp_98_rule(Parser *p);
647static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100648static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300649static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700650static asdl_seq *_loop0_103_rule(Parser *p);
651static asdl_seq *_gather_102_rule(Parser *p);
652static asdl_seq *_loop1_104_rule(Parser *p);
653static asdl_seq *_loop0_105_rule(Parser *p);
654static asdl_seq *_loop0_106_rule(Parser *p);
655static void *_tmp_107_rule(Parser *p);
656static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300657static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700658static asdl_seq *_gather_109_rule(Parser *p);
659static asdl_seq *_loop0_112_rule(Parser *p);
660static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100661static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300662static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100663static asdl_seq *_loop0_116_rule(Parser *p);
664static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700665static asdl_seq *_loop0_117_rule(Parser *p);
666static asdl_seq *_loop0_119_rule(Parser *p);
667static asdl_seq *_gather_118_rule(Parser *p);
668static void *_tmp_120_rule(Parser *p);
669static asdl_seq *_loop0_122_rule(Parser *p);
670static asdl_seq *_gather_121_rule(Parser *p);
671static asdl_seq *_loop0_124_rule(Parser *p);
672static asdl_seq *_gather_123_rule(Parser *p);
673static void *_tmp_125_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300674static asdl_seq *_loop0_126_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700675static void *_tmp_127_rule(Parser *p);
Pablo Galindo9f495902020-06-08 02:57:00 +0100676static asdl_seq *_loop0_128_rule(Parser *p);
677static asdl_seq *_loop0_129_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300678static void *_tmp_130_rule(Parser *p);
Pablo Galindo9f495902020-06-08 02:57:00 +0100679static void *_tmp_131_rule(Parser *p);
680static asdl_seq *_loop0_132_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100681static void *_tmp_133_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100682static asdl_seq *_loop0_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100683static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700684static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100685static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700686static void *_tmp_138_rule(Parser *p);
687static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300688static void *_tmp_140_rule(Parser *p);
689static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700690static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300691static void *_tmp_143_rule(Parser *p);
692static void *_tmp_144_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300693static void *_tmp_145_rule(Parser *p);
Pablo Galindo9f495902020-06-08 02:57:00 +0100694static void *_tmp_146_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300695static void *_tmp_147_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300696static void *_tmp_148_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100697static void *_tmp_149_rule(Parser *p);
Pablo Galindo9f495902020-06-08 02:57:00 +0100698static void *_tmp_150_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100699static asdl_seq *_loop1_151_rule(Parser *p);
700static asdl_seq *_loop1_152_rule(Parser *p);
701static void *_tmp_153_rule(Parser *p);
702static void *_tmp_154_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100703
704
705// file: statements? $
706static mod_ty
707file_rule(Parser *p)
708{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100709 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100710 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100711 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100712 return NULL;
713 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100714 mod_ty _res = NULL;
715 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100716 { // statements? $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300717 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100718 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300719 return NULL;
720 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100721 D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100722 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100723 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100724 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100725 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100726 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100727 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100728 )
729 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100730 D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100731 _res = _PyPegen_make_module ( p , a );
732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100733 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100734 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100735 return NULL;
736 }
737 goto done;
738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100739 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100740 D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
741 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100743 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100744 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100745 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100746 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100747}
748
749// interactive: statement_newline
750static mod_ty
751interactive_rule(Parser *p)
752{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100753 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100754 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100755 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100756 return NULL;
757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100758 mod_ty _res = NULL;
759 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100760 { // statement_newline
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300761 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100762 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300763 return NULL;
764 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100765 D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100766 asdl_seq* a;
767 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100768 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100769 )
770 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100771 D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100772 _res = Interactive ( a , p -> arena );
773 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100774 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100775 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100776 return NULL;
777 }
778 goto done;
779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100780 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100781 D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
782 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100784 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100785 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100786 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100787 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100788}
789
790// eval: expressions NEWLINE* $
791static mod_ty
792eval_rule(Parser *p)
793{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100794 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100795 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100796 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100797 return NULL;
798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100799 mod_ty _res = NULL;
800 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100801 { // expressions NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300802 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100803 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300804 return NULL;
805 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100806 D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100807 asdl_seq * _loop0_1_var;
808 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100809 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100810 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100811 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100812 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100813 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100814 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100815 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100816 )
817 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100818 D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100819 _res = Expression ( a , p -> arena );
820 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100821 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100822 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100823 return NULL;
824 }
825 goto done;
826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100827 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100828 D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
829 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100831 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100832 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100833 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100834 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100835}
836
Guido van Rossumc001c092020-04-30 12:12:19 -0700837// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
838static mod_ty
839func_type_rule(Parser *p)
840{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100841 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -0700842 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100843 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -0700844 return NULL;
845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100846 mod_ty _res = NULL;
847 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700848 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300849 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100850 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300851 return NULL;
852 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100853 D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100854 Token * _literal;
855 Token * _literal_1;
856 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700857 asdl_seq * _loop0_2_var;
858 void *a;
859 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100860 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700861 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100862 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700863 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100864 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700865 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100866 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700867 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100868 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700869 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100870 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700871 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100872 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700873 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100874 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700875 )
876 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100877 D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100878 _res = FunctionType ( a , b , p -> arena );
879 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700880 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100881 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -0700882 return NULL;
883 }
884 goto done;
885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100886 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100887 D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
888 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
Guido van Rossumc001c092020-04-30 12:12:19 -0700889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100890 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700891 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100892 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100893 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700894}
895
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100896// fstring: star_expressions
897static expr_ty
898fstring_rule(Parser *p)
899{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100900 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100901 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100902 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100903 return NULL;
904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100905 expr_ty _res = NULL;
906 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100907 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300908 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100909 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300910 return NULL;
911 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100912 D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100913 expr_ty star_expressions_var;
914 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100915 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100916 )
917 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100918 D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100919 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100920 goto done;
921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100922 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100923 D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
924 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100926 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100927 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100928 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100929 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100930}
931
Guido van Rossumc001c092020-04-30 12:12:19 -0700932// type_expressions:
933// | ','.expression+ ',' '*' expression ',' '**' expression
934// | ','.expression+ ',' '*' expression
935// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700936// | '*' expression ',' '**' expression
937// | '*' expression
938// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700939// | ','.expression+
940static asdl_seq*
941type_expressions_rule(Parser *p)
942{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100943 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -0700944 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100945 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -0700946 return NULL;
947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100948 asdl_seq* _res = NULL;
949 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700950 { // ','.expression+ ',' '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300951 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100952 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300953 return NULL;
954 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100955 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100956 Token * _literal;
957 Token * _literal_1;
958 Token * _literal_2;
959 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700960 asdl_seq * a;
961 expr_ty b;
962 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100964 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700965 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100966 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700967 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100968 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700969 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100970 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700971 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100972 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700973 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100974 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700975 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100976 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700977 )
978 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100979 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100980 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
981 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700982 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100983 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -0700984 return NULL;
985 }
986 goto done;
987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100988 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100989 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
990 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -0700991 }
992 { // ','.expression+ ',' '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300993 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100994 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300995 return NULL;
996 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100997 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100998 Token * _literal;
999 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07001000 asdl_seq * a;
1001 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001002 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001003 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001004 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001005 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07001006 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001007 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -07001008 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001009 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -07001010 )
1011 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001012 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001013 _res = _PyPegen_seq_append_to_end ( p , a , b );
1014 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07001015 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001016 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07001017 return NULL;
1018 }
1019 goto done;
1020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001021 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001022 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1023 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -07001024 }
1025 { // ','.expression+ ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001026 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001027 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001028 return NULL;
1029 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001030 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001031 Token * _literal;
1032 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07001033 asdl_seq * a;
1034 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001035 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001036 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001037 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001038 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07001039 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001040 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07001041 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001042 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -07001043 )
1044 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001045 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001046 _res = _PyPegen_seq_append_to_end ( p , a , b );
1047 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07001048 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001049 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07001050 return NULL;
1051 }
1052 goto done;
1053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001054 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001055 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1056 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -07001057 }
Shantanu603d3542020-05-03 22:08:14 -07001058 { // '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001059 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001060 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001061 return NULL;
1062 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001063 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001064 Token * _literal;
1065 Token * _literal_1;
1066 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -07001067 expr_ty a;
1068 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -07001069 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001070 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -07001071 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001072 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001073 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001074 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -07001075 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001076 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -07001077 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001078 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001079 )
1080 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001081 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001082 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
1083 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001084 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001085 D(p->level--);
Shantanu603d3542020-05-03 22:08:14 -07001086 return NULL;
1087 }
1088 goto done;
1089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001090 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001091 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1092 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
Shantanu603d3542020-05-03 22:08:14 -07001093 }
1094 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001095 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001096 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001097 return NULL;
1098 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001099 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001100 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001101 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001102 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001103 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -07001104 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001105 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001106 )
1107 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001108 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001109 _res = _PyPegen_singleton_seq ( p , a );
1110 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001111 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001112 D(p->level--);
Shantanu603d3542020-05-03 22:08:14 -07001113 return NULL;
1114 }
1115 goto done;
1116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001117 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001118 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1119 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
Shantanu603d3542020-05-03 22:08:14 -07001120 }
1121 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001122 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001123 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001124 return NULL;
1125 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001126 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001127 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001128 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001129 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001130 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -07001131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001132 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001133 )
1134 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001135 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001136 _res = _PyPegen_singleton_seq ( p , a );
1137 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001138 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001139 D(p->level--);
Shantanu603d3542020-05-03 22:08:14 -07001140 return NULL;
1141 }
1142 goto done;
1143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001144 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001145 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1146 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
Shantanu603d3542020-05-03 22:08:14 -07001147 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001148 { // ','.expression+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001149 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001150 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001151 return NULL;
1152 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001153 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
Guido van Rossumc001c092020-04-30 12:12:19 -07001154 asdl_seq * _gather_9_var;
1155 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001156 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001157 )
1158 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001159 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001160 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001161 goto done;
1162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001163 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001164 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1165 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
Guido van Rossumc001c092020-04-30 12:12:19 -07001166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001167 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001168 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001169 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001170 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001171}
1172
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001173// statements: statement+
1174static asdl_seq*
1175statements_rule(Parser *p)
1176{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001177 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001178 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001179 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001180 return NULL;
1181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001182 asdl_seq* _res = NULL;
1183 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001184 { // statement+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001185 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001186 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001187 return NULL;
1188 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001189 D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001190 asdl_seq * a;
1191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001192 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001193 )
1194 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001195 D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001196 _res = _PyPegen_seq_flatten ( p , a );
1197 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001198 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001199 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001200 return NULL;
1201 }
1202 goto done;
1203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001204 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001205 D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1206 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001208 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001209 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001210 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001211 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001212}
1213
1214// statement: compound_stmt | simple_stmt
1215static asdl_seq*
1216statement_rule(Parser *p)
1217{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001218 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001219 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001220 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001221 return NULL;
1222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001223 asdl_seq* _res = NULL;
1224 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001225 { // compound_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001226 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001227 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001228 return NULL;
1229 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001230 D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001231 stmt_ty a;
1232 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001233 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001234 )
1235 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001236 D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001237 _res = _PyPegen_singleton_seq ( p , a );
1238 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001239 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001240 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001241 return NULL;
1242 }
1243 goto done;
1244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001245 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001246 D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1247 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001248 }
1249 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001250 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001251 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001252 return NULL;
1253 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001254 D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001255 asdl_seq* simple_stmt_var;
1256 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001257 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001258 )
1259 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001260 D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001261 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001262 goto done;
1263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001264 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001265 D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1266 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001268 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001269 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001270 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001271 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001272}
1273
1274// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1275static asdl_seq*
1276statement_newline_rule(Parser *p)
1277{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001278 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001279 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001280 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001281 return NULL;
1282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001283 asdl_seq* _res = NULL;
1284 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001285 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1286 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001287 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001288 return NULL;
1289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001290 int _start_lineno = p->tokens[_mark]->lineno;
1291 UNUSED(_start_lineno); // Only used by EXTRA macro
1292 int _start_col_offset = p->tokens[_mark]->col_offset;
1293 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001294 { // compound_stmt NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001295 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001296 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001297 return NULL;
1298 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001299 D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001300 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001301 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001303 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001305 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001306 )
1307 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001308 D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001309 _res = _PyPegen_singleton_seq ( p , a );
1310 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001311 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001312 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001313 return NULL;
1314 }
1315 goto done;
1316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001317 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001318 D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1319 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001320 }
1321 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001322 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001323 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001324 return NULL;
1325 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001326 D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001327 asdl_seq* simple_stmt_var;
1328 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001329 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001330 )
1331 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001332 D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001333 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001334 goto done;
1335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001336 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001337 D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1338 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001339 }
1340 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001341 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001342 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001343 return NULL;
1344 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001345 D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Pablo Galindob796b3f2020-05-01 12:32:26 +01001346 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001347 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001348 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001349 )
1350 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001351 D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001352 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1353 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001354 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001355 return NULL;
1356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001357 int _end_lineno = _token->end_lineno;
1358 UNUSED(_end_lineno); // Only used by EXTRA macro
1359 int _end_col_offset = _token->end_col_offset;
1360 UNUSED(_end_col_offset); // Only used by EXTRA macro
1361 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1362 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001363 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001364 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001365 return NULL;
1366 }
1367 goto done;
1368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001369 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001370 D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1371 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001372 }
1373 { // $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001374 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001375 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001376 return NULL;
1377 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001378 D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
Pablo Galindob796b3f2020-05-01 12:32:26 +01001379 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001380 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001381 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001382 )
1383 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001384 D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001385 _res = _PyPegen_interactive_exit ( p );
1386 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001387 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001388 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001389 return NULL;
1390 }
1391 goto done;
1392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001393 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001394 D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1395 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001397 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001398 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001399 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001400 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001401}
1402
1403// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1404static asdl_seq*
1405simple_stmt_rule(Parser *p)
1406{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001407 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001408 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001409 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001410 return NULL;
1411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001412 asdl_seq* _res = NULL;
1413 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001414 { // small_stmt !';' NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001415 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001416 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001417 return NULL;
1418 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001419 D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "small_stmt !';' NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001420 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001421 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001422 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001423 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001424 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001425 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001426 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001427 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001428 )
1429 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001430 D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "small_stmt !';' NEWLINE"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001431 _res = _PyPegen_singleton_seq ( p , a );
1432 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001433 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001434 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001435 return NULL;
1436 }
1437 goto done;
1438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001439 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001440 D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1441 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "small_stmt !';' NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001442 }
1443 { // ';'.small_stmt+ ';'? NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001444 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001445 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001446 return NULL;
1447 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001448 D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.small_stmt+ ';'? NEWLINE"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001449 void *_opt_var;
1450 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001451 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001452 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001453 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001454 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001455 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001456 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001457 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001458 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001459 )
1460 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001461 D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.small_stmt+ ';'? NEWLINE"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001462 _res = a;
1463 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001464 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001465 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001466 return NULL;
1467 }
1468 goto done;
1469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001470 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001471 D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1472 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.small_stmt+ ';'? NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001474 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001475 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001476 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001477 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001478}
1479
1480// small_stmt:
1481// | assignment
1482// | star_expressions
1483// | &'return' return_stmt
1484// | &('import' | 'from') import_stmt
1485// | &'raise' raise_stmt
1486// | 'pass'
1487// | &'del' del_stmt
1488// | &'yield' yield_stmt
1489// | &'assert' assert_stmt
1490// | 'break'
1491// | 'continue'
1492// | &'global' global_stmt
1493// | &'nonlocal' nonlocal_stmt
1494static stmt_ty
1495small_stmt_rule(Parser *p)
1496{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001497 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001498 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001499 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001500 return NULL;
1501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001502 stmt_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001503 if (_PyPegen_is_memoized(p, small_stmt_type, &_res)) {
1504 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001505 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001507 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001508 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1509 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001510 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001511 return NULL;
1512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001513 int _start_lineno = p->tokens[_mark]->lineno;
1514 UNUSED(_start_lineno); // Only used by EXTRA macro
1515 int _start_col_offset = p->tokens[_mark]->col_offset;
1516 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001517 { // assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001518 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001519 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001520 return NULL;
1521 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001522 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001523 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001524 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001525 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001526 )
1527 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001528 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001529 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001530 goto done;
1531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001532 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001533 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1534 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001535 }
1536 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001537 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001538 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001539 return NULL;
1540 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001541 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001542 expr_ty e;
1543 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001544 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001545 )
1546 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001547 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001548 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1549 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001550 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001551 return NULL;
1552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001553 int _end_lineno = _token->end_lineno;
1554 UNUSED(_end_lineno); // Only used by EXTRA macro
1555 int _end_col_offset = _token->end_col_offset;
1556 UNUSED(_end_col_offset); // Only used by EXTRA macro
1557 _res = _Py_Expr ( e , EXTRA );
1558 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001559 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001560 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001561 return NULL;
1562 }
1563 goto done;
1564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001565 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001566 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1567 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001568 }
1569 { // &'return' return_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001570 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001571 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001572 return NULL;
1573 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001574 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001575 stmt_ty return_stmt_var;
1576 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001577 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001578 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001579 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001580 )
1581 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001582 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001583 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001584 goto done;
1585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001586 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001587 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1588 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001589 }
1590 { // &('import' | 'from') import_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001591 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001592 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001593 return NULL;
1594 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001595 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001596 stmt_ty import_stmt_var;
1597 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001598 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001599 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001600 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001601 )
1602 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001603 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001604 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001605 goto done;
1606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001607 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001608 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1609 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001610 }
1611 { // &'raise' raise_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001612 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001613 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001614 return NULL;
1615 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001616 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001617 stmt_ty raise_stmt_var;
1618 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001619 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001620 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001621 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 )
1623 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001624 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001625 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001626 goto done;
1627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001628 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001629 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1630 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001631 }
1632 { // 'pass'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001633 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001634 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001635 return NULL;
1636 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001637 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001638 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001639 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001640 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001641 )
1642 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001643 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001644 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1645 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001646 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001647 return NULL;
1648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001649 int _end_lineno = _token->end_lineno;
1650 UNUSED(_end_lineno); // Only used by EXTRA macro
1651 int _end_col_offset = _token->end_col_offset;
1652 UNUSED(_end_col_offset); // Only used by EXTRA macro
1653 _res = _Py_Pass ( EXTRA );
1654 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001655 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001656 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001657 return NULL;
1658 }
1659 goto done;
1660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001661 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001662 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1663 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001664 }
1665 { // &'del' del_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001666 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001667 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001668 return NULL;
1669 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001670 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001671 stmt_ty del_stmt_var;
1672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001673 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001675 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 )
1677 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001678 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001679 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001680 goto done;
1681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001682 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001683 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1684 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001685 }
1686 { // &'yield' yield_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001687 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001688 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001689 return NULL;
1690 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001691 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001692 stmt_ty yield_stmt_var;
1693 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001694 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001695 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001696 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001697 )
1698 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001699 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001700 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001701 goto done;
1702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001703 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001704 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1705 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001706 }
1707 { // &'assert' assert_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001708 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001709 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001710 return NULL;
1711 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001712 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001713 stmt_ty assert_stmt_var;
1714 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001715 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001716 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001717 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001718 )
1719 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001720 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001721 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001722 goto done;
1723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001724 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001725 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1726 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001727 }
1728 { // 'break'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001729 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001730 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001731 return NULL;
1732 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001733 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001734 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001735 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001736 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001737 )
1738 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001739 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001740 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1741 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001742 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001743 return NULL;
1744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001745 int _end_lineno = _token->end_lineno;
1746 UNUSED(_end_lineno); // Only used by EXTRA macro
1747 int _end_col_offset = _token->end_col_offset;
1748 UNUSED(_end_col_offset); // Only used by EXTRA macro
1749 _res = _Py_Break ( EXTRA );
1750 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001751 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001752 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001753 return NULL;
1754 }
1755 goto done;
1756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001757 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001758 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1759 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001760 }
1761 { // 'continue'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001762 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001763 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001764 return NULL;
1765 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001766 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001767 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001768 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001769 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001770 )
1771 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001772 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001773 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1774 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001775 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001776 return NULL;
1777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001778 int _end_lineno = _token->end_lineno;
1779 UNUSED(_end_lineno); // Only used by EXTRA macro
1780 int _end_col_offset = _token->end_col_offset;
1781 UNUSED(_end_col_offset); // Only used by EXTRA macro
1782 _res = _Py_Continue ( EXTRA );
1783 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001784 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001785 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001786 return NULL;
1787 }
1788 goto done;
1789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001790 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001791 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1792 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001793 }
1794 { // &'global' global_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001795 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001796 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001797 return NULL;
1798 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001799 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001800 stmt_ty global_stmt_var;
1801 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001802 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001804 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 )
1806 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001807 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001808 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001809 goto done;
1810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001811 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001812 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1813 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001814 }
1815 { // &'nonlocal' nonlocal_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001816 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001817 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001818 return NULL;
1819 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001820 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001821 stmt_ty nonlocal_stmt_var;
1822 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001823 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001824 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001825 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001826 )
1827 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001828 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001829 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001830 goto done;
1831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001832 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001833 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1834 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001836 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001837 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001838 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01001839 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001840 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001841}
1842
1843// compound_stmt:
1844// | &('def' | '@' | ASYNC) function_def
1845// | &'if' if_stmt
1846// | &('class' | '@') class_def
1847// | &('with' | ASYNC) with_stmt
1848// | &('for' | ASYNC) for_stmt
1849// | &'try' try_stmt
1850// | &'while' while_stmt
1851static stmt_ty
1852compound_stmt_rule(Parser *p)
1853{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001854 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001855 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001856 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001857 return NULL;
1858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001859 stmt_ty _res = NULL;
1860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001861 { // &('def' | '@' | ASYNC) function_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001862 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001863 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001864 return NULL;
1865 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001866 D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001867 stmt_ty function_def_var;
1868 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001869 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001870 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001871 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001872 )
1873 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001874 D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001875 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001876 goto done;
1877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001878 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001879 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1880 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001881 }
1882 { // &'if' if_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001883 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001884 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001885 return NULL;
1886 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001887 D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001888 stmt_ty if_stmt_var;
1889 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001890 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001891 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001892 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001893 )
1894 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001895 D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001896 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001897 goto done;
1898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001899 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001900 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1901 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001902 }
1903 { // &('class' | '@') class_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001904 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001905 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001906 return NULL;
1907 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001908 D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001909 stmt_ty class_def_var;
1910 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001911 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001912 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001913 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001914 )
1915 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001916 D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001917 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001918 goto done;
1919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001920 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001921 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1922 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001923 }
1924 { // &('with' | ASYNC) with_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001925 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001926 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001927 return NULL;
1928 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001929 D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001930 stmt_ty with_stmt_var;
1931 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001932 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001933 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001934 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001935 )
1936 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001937 D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001938 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001939 goto done;
1940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001941 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001942 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1943 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | ASYNC) with_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001944 }
1945 { // &('for' | ASYNC) for_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001946 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001947 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001948 return NULL;
1949 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001950 D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001951 stmt_ty for_stmt_var;
1952 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001953 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001955 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001956 )
1957 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001958 D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001959 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001960 goto done;
1961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001962 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001963 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1964 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | ASYNC) for_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001965 }
1966 { // &'try' try_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001967 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001968 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001969 return NULL;
1970 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001971 D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001972 stmt_ty try_stmt_var;
1973 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001974 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001975 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001976 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001977 )
1978 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001979 D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001980 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001981 goto done;
1982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001983 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001984 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1985 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001986 }
1987 { // &'while' while_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001988 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001989 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001990 return NULL;
1991 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001992 D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001993 stmt_ty while_stmt_var;
1994 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001995 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001996 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001997 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001998 )
1999 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002000 D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002001 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002002 goto done;
2003 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002004 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002005 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2006 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002008 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002009 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002010 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002011 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002012}
2013
2014// assignment:
2015// | NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002016// | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Pablo Galindo9f495902020-06-08 02:57:00 +01002017// | ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002018// | single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002019// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03002020static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002021assignment_rule(Parser *p)
2022{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002023 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002024 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002025 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002026 return NULL;
2027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002028 stmt_ty _res = NULL;
2029 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002030 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2031 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002032 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002033 return NULL;
2034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002035 int _start_lineno = p->tokens[_mark]->lineno;
2036 UNUSED(_start_lineno); // Only used by EXTRA macro
2037 int _start_col_offset = p->tokens[_mark]->col_offset;
2038 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002039 { // NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002040 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002041 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002042 return NULL;
2043 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002044 D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002045 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002046 expr_ty a;
2047 expr_ty b;
2048 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002049 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002050 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002051 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002052 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002053 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002054 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002055 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002056 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002057 )
2058 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002059 D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002060 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2061 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002062 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002063 return NULL;
2064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002065 int _end_lineno = _token->end_lineno;
2066 UNUSED(_end_lineno); // Only used by EXTRA macro
2067 int _end_col_offset = _token->end_col_offset;
2068 UNUSED(_end_col_offset); // Only used by EXTRA macro
2069 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
2070 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002071 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002072 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002073 return NULL;
2074 }
2075 goto done;
2076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002077 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002078 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2079 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002080 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002081 { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002082 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002083 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002084 return NULL;
2085 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002086 D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002087 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002088 void *a;
2089 expr_ty b;
2090 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002091 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002092 (a = _tmp_20_rule(p)) // '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002093 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002094 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002095 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002096 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002097 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002098 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002099 )
2100 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002101 D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002102 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2103 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002104 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002105 return NULL;
2106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002107 int _end_lineno = _token->end_lineno;
2108 UNUSED(_end_lineno); // Only used by EXTRA macro
2109 int _end_col_offset = _token->end_col_offset;
2110 UNUSED(_end_col_offset); // Only used by EXTRA macro
2111 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
2112 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002113 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002114 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002115 return NULL;
2116 }
2117 goto done;
2118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002119 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002120 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2121 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002122 }
Pablo Galindo9f495902020-06-08 02:57:00 +01002123 { // ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002124 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002125 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002126 return NULL;
2127 }
Pablo Galindo9f495902020-06-08 02:57:00 +01002128 D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002129 asdl_seq * a;
2130 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07002131 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002132 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002133 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002134 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002135 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07002136 &&
Pablo Galindo9f495902020-06-08 02:57:00 +01002137 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='='
2138 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002139 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002140 )
2141 {
Pablo Galindo9f495902020-06-08 02:57:00 +01002142 D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002143 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2144 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002145 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002146 return NULL;
2147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002148 int _end_lineno = _token->end_lineno;
2149 UNUSED(_end_lineno); // Only used by EXTRA macro
2150 int _end_col_offset = _token->end_col_offset;
2151 UNUSED(_end_col_offset); // Only used by EXTRA macro
2152 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2153 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002154 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002155 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002156 return NULL;
2157 }
2158 goto done;
2159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002160 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002161 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +01002162 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002163 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002164 { // single_target augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002165 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002166 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002167 return NULL;
2168 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002169 D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign (yield_expr | star_expressions)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002170 expr_ty a;
2171 AugOperator* b;
2172 void *c;
2173 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002174 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002175 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002176 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002177 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002178 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002179 )
2180 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002181 D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign (yield_expr | star_expressions)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002182 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2183 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002184 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002185 return NULL;
2186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002187 int _end_lineno = _token->end_lineno;
2188 UNUSED(_end_lineno); // Only used by EXTRA macro
2189 int _end_col_offset = _token->end_col_offset;
2190 UNUSED(_end_col_offset); // Only used by EXTRA macro
2191 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
2192 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002193 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002194 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002195 return NULL;
2196 }
2197 goto done;
2198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002199 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002200 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2201 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign (yield_expr | star_expressions)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002202 }
2203 { // invalid_assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002204 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002205 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002206 return NULL;
2207 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002208 D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002209 void *invalid_assignment_var;
2210 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002211 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002212 )
2213 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002214 D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002215 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002216 goto done;
2217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002218 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002219 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2220 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002222 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002223 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002224 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002225 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002226}
2227
2228// augassign:
2229// | '+='
2230// | '-='
2231// | '*='
2232// | '@='
2233// | '/='
2234// | '%='
2235// | '&='
2236// | '|='
2237// | '^='
2238// | '<<='
2239// | '>>='
2240// | '**='
2241// | '//='
2242static AugOperator*
2243augassign_rule(Parser *p)
2244{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002245 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002246 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002247 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002248 return NULL;
2249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002250 AugOperator* _res = NULL;
2251 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002252 { // '+='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002253 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002254 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002255 return NULL;
2256 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002257 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002258 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002259 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002260 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002261 )
2262 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002263 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002264 _res = _PyPegen_augoperator ( p , Add );
2265 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002266 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002267 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002268 return NULL;
2269 }
2270 goto done;
2271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002272 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002273 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2274 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002275 }
2276 { // '-='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002277 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002278 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002279 return NULL;
2280 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002281 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002282 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002283 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002284 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002285 )
2286 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002287 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002288 _res = _PyPegen_augoperator ( p , Sub );
2289 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002290 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002291 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002292 return NULL;
2293 }
2294 goto done;
2295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002296 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002297 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2298 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002299 }
2300 { // '*='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002301 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002302 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002303 return NULL;
2304 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002305 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002306 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002307 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002308 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002309 )
2310 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002311 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002312 _res = _PyPegen_augoperator ( p , Mult );
2313 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002314 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002315 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002316 return NULL;
2317 }
2318 goto done;
2319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002320 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002321 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2322 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002323 }
2324 { // '@='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002325 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002326 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002327 return NULL;
2328 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002329 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002330 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002331 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002332 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002333 )
2334 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002335 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002336 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2337 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002338 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002339 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002340 return NULL;
2341 }
2342 goto done;
2343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002344 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002345 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2346 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002347 }
2348 { // '/='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002349 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002350 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002351 return NULL;
2352 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002353 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002354 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002355 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002356 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002357 )
2358 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002359 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002360 _res = _PyPegen_augoperator ( p , Div );
2361 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002362 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002363 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002364 return NULL;
2365 }
2366 goto done;
2367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002368 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002369 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2370 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002371 }
2372 { // '%='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002373 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002374 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002375 return NULL;
2376 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002377 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002378 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002379 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002380 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002381 )
2382 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002383 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002384 _res = _PyPegen_augoperator ( p , Mod );
2385 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002386 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002387 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002388 return NULL;
2389 }
2390 goto done;
2391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002392 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002393 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2394 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002395 }
2396 { // '&='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002397 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002398 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002399 return NULL;
2400 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002401 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002402 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002404 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002405 )
2406 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002407 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002408 _res = _PyPegen_augoperator ( p , BitAnd );
2409 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002410 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002411 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002412 return NULL;
2413 }
2414 goto done;
2415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002416 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002417 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2418 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002419 }
2420 { // '|='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002421 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002422 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002423 return NULL;
2424 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002425 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002426 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002427 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002428 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002429 )
2430 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002431 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002432 _res = _PyPegen_augoperator ( p , BitOr );
2433 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002434 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002435 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002436 return NULL;
2437 }
2438 goto done;
2439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002440 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002441 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2442 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002443 }
2444 { // '^='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002445 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002446 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002447 return NULL;
2448 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002449 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002450 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002451 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002452 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002453 )
2454 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002455 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002456 _res = _PyPegen_augoperator ( p , BitXor );
2457 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002458 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002459 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002460 return NULL;
2461 }
2462 goto done;
2463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002464 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002465 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2466 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002467 }
2468 { // '<<='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002469 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002470 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002471 return NULL;
2472 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002473 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002474 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002475 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002476 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002477 )
2478 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002479 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002480 _res = _PyPegen_augoperator ( p , LShift );
2481 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002482 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002483 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002484 return NULL;
2485 }
2486 goto done;
2487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002488 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002489 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2490 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002491 }
2492 { // '>>='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002493 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002494 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002495 return NULL;
2496 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002497 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002498 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002499 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002500 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002501 )
2502 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002503 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002504 _res = _PyPegen_augoperator ( p , RShift );
2505 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002506 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002507 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002508 return NULL;
2509 }
2510 goto done;
2511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002512 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002513 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2514 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002515 }
2516 { // '**='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002517 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002518 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002519 return NULL;
2520 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002521 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002522 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002523 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002524 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002525 )
2526 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002527 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002528 _res = _PyPegen_augoperator ( p , Pow );
2529 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002530 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002531 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002532 return NULL;
2533 }
2534 goto done;
2535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002536 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002537 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2538 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002539 }
2540 { // '//='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002541 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002542 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002543 return NULL;
2544 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002545 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002546 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002547 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002548 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002549 )
2550 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002551 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002552 _res = _PyPegen_augoperator ( p , FloorDiv );
2553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002554 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002555 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002556 return NULL;
2557 }
2558 goto done;
2559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002560 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002561 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2562 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002564 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002565 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002566 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002567 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002568}
2569
2570// global_stmt: 'global' ','.NAME+
2571static stmt_ty
2572global_stmt_rule(Parser *p)
2573{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002574 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002575 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002576 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002577 return NULL;
2578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002579 stmt_ty _res = NULL;
2580 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002581 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2582 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002583 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002584 return NULL;
2585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002586 int _start_lineno = p->tokens[_mark]->lineno;
2587 UNUSED(_start_lineno); // Only used by EXTRA macro
2588 int _start_col_offset = p->tokens[_mark]->col_offset;
2589 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002590 { // 'global' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002591 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002592 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002593 return NULL;
2594 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002595 D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002596 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002597 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002598 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002599 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002600 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002601 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002602 )
2603 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002604 D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002605 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2606 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002607 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002608 return NULL;
2609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002610 int _end_lineno = _token->end_lineno;
2611 UNUSED(_end_lineno); // Only used by EXTRA macro
2612 int _end_col_offset = _token->end_col_offset;
2613 UNUSED(_end_col_offset); // Only used by EXTRA macro
2614 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2615 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002616 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002617 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002618 return NULL;
2619 }
2620 goto done;
2621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002622 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002623 D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2624 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002626 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002627 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002628 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002629 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002630}
2631
2632// nonlocal_stmt: 'nonlocal' ','.NAME+
2633static stmt_ty
2634nonlocal_stmt_rule(Parser *p)
2635{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002636 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002637 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002638 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002639 return NULL;
2640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002641 stmt_ty _res = NULL;
2642 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002643 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2644 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002645 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002646 return NULL;
2647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002648 int _start_lineno = p->tokens[_mark]->lineno;
2649 UNUSED(_start_lineno); // Only used by EXTRA macro
2650 int _start_col_offset = p->tokens[_mark]->col_offset;
2651 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002652 { // 'nonlocal' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002653 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002654 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002655 return NULL;
2656 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002657 D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002658 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002659 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002660 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002661 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002662 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002663 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002664 )
2665 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002666 D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002667 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2668 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002669 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002670 return NULL;
2671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002672 int _end_lineno = _token->end_lineno;
2673 UNUSED(_end_lineno); // Only used by EXTRA macro
2674 int _end_col_offset = _token->end_col_offset;
2675 UNUSED(_end_col_offset); // Only used by EXTRA macro
2676 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2677 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002678 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002679 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002680 return NULL;
2681 }
2682 goto done;
2683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002684 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002685 D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2686 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002688 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002689 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002690 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002691 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002692}
2693
2694// yield_stmt: yield_expr
2695static stmt_ty
2696yield_stmt_rule(Parser *p)
2697{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002698 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002699 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002700 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002701 return NULL;
2702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002703 stmt_ty _res = NULL;
2704 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002705 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2706 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002707 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002708 return NULL;
2709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002710 int _start_lineno = p->tokens[_mark]->lineno;
2711 UNUSED(_start_lineno); // Only used by EXTRA macro
2712 int _start_col_offset = p->tokens[_mark]->col_offset;
2713 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002715 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002716 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002717 return NULL;
2718 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002719 D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002720 expr_ty y;
2721 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002722 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002723 )
2724 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002725 D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002726 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2727 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002728 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002729 return NULL;
2730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002731 int _end_lineno = _token->end_lineno;
2732 UNUSED(_end_lineno); // Only used by EXTRA macro
2733 int _end_col_offset = _token->end_col_offset;
2734 UNUSED(_end_col_offset); // Only used by EXTRA macro
2735 _res = _Py_Expr ( y , EXTRA );
2736 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002737 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002738 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002739 return NULL;
2740 }
2741 goto done;
2742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002743 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002744 D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2745 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002747 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002748 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002749 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002750 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002751}
2752
2753// assert_stmt: 'assert' expression [',' expression]
2754static stmt_ty
2755assert_stmt_rule(Parser *p)
2756{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002757 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002758 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002759 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002760 return NULL;
2761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002762 stmt_ty _res = NULL;
2763 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002764 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2765 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002766 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002767 return NULL;
2768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002769 int _start_lineno = p->tokens[_mark]->lineno;
2770 UNUSED(_start_lineno); // Only used by EXTRA macro
2771 int _start_col_offset = p->tokens[_mark]->col_offset;
2772 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002773 { // 'assert' expression [',' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002774 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002775 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002776 return NULL;
2777 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002778 D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002779 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002780 expr_ty a;
2781 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002782 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002783 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002784 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002785 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002786 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002787 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002788 )
2789 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002790 D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002791 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2792 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002793 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002794 return NULL;
2795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002796 int _end_lineno = _token->end_lineno;
2797 UNUSED(_end_lineno); // Only used by EXTRA macro
2798 int _end_col_offset = _token->end_col_offset;
2799 UNUSED(_end_col_offset); // Only used by EXTRA macro
2800 _res = _Py_Assert ( a , b , EXTRA );
2801 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002802 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002803 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002804 return NULL;
2805 }
2806 goto done;
2807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002808 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002809 D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2810 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002812 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002813 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002814 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002815 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002816}
2817
2818// del_stmt: 'del' del_targets
2819static stmt_ty
2820del_stmt_rule(Parser *p)
2821{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002822 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002823 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002824 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002825 return NULL;
2826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002827 stmt_ty _res = NULL;
2828 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002829 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2830 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002831 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002832 return NULL;
2833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002834 int _start_lineno = p->tokens[_mark]->lineno;
2835 UNUSED(_start_lineno); // Only used by EXTRA macro
2836 int _start_col_offset = p->tokens[_mark]->col_offset;
2837 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002838 { // 'del' del_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002839 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002840 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002841 return NULL;
2842 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002843 D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002844 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002845 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002846 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002847 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002848 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002849 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002850 )
2851 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002852 D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002853 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2854 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002855 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002856 return NULL;
2857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002858 int _end_lineno = _token->end_lineno;
2859 UNUSED(_end_lineno); // Only used by EXTRA macro
2860 int _end_col_offset = _token->end_col_offset;
2861 UNUSED(_end_col_offset); // Only used by EXTRA macro
2862 _res = _Py_Delete ( a , EXTRA );
2863 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002864 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002865 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002866 return NULL;
2867 }
2868 goto done;
2869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002870 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002871 D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2872 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002874 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002875 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002876 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002877 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002878}
2879
2880// import_stmt: import_name | import_from
2881static stmt_ty
2882import_stmt_rule(Parser *p)
2883{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002884 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002885 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002886 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002887 return NULL;
2888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002889 stmt_ty _res = NULL;
2890 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002891 { // import_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002892 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002893 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002894 return NULL;
2895 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002896 D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002897 stmt_ty import_name_var;
2898 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002899 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900 )
2901 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002902 D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002903 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002904 goto done;
2905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002906 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002907 D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2908 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002909 }
2910 { // import_from
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002911 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002912 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002913 return NULL;
2914 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002915 D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002916 stmt_ty import_from_var;
2917 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002918 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002919 )
2920 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002921 D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002922 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002923 goto done;
2924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002925 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002926 D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2927 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002929 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002930 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002931 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002932 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002933}
2934
2935// import_name: 'import' dotted_as_names
2936static stmt_ty
2937import_name_rule(Parser *p)
2938{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002939 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002940 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002941 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002942 return NULL;
2943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002944 stmt_ty _res = NULL;
2945 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002946 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2947 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002948 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002949 return NULL;
2950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002951 int _start_lineno = p->tokens[_mark]->lineno;
2952 UNUSED(_start_lineno); // Only used by EXTRA macro
2953 int _start_col_offset = p->tokens[_mark]->col_offset;
2954 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002955 { // 'import' dotted_as_names
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002956 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002957 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002958 return NULL;
2959 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002960 D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002961 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002962 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002963 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002964 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002965 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002966 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002967 )
2968 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002969 D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002970 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2971 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002972 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002973 return NULL;
2974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002975 int _end_lineno = _token->end_lineno;
2976 UNUSED(_end_lineno); // Only used by EXTRA macro
2977 int _end_col_offset = _token->end_col_offset;
2978 UNUSED(_end_col_offset); // Only used by EXTRA macro
2979 _res = _Py_Import ( a , EXTRA );
2980 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002981 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002982 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002983 return NULL;
2984 }
2985 goto done;
2986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002987 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002988 D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
2989 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002991 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002992 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002993 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002994 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002995}
2996
2997// import_from:
2998// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2999// | 'from' (('.' | '...'))+ 'import' import_from_targets
3000static stmt_ty
3001import_from_rule(Parser *p)
3002{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003003 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003004 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003005 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003006 return NULL;
3007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003008 stmt_ty _res = NULL;
3009 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003010 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3011 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003012 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003013 return NULL;
3014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003015 int _start_lineno = p->tokens[_mark]->lineno;
3016 UNUSED(_start_lineno); // Only used by EXTRA macro
3017 int _start_col_offset = p->tokens[_mark]->col_offset;
3018 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003019 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003020 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003021 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003022 return NULL;
3023 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003024 D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003025 Token * _keyword;
3026 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003027 asdl_seq * a;
3028 expr_ty b;
3029 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003030 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003031 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003033 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003034 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003035 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003036 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003037 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003038 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003039 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003040 )
3041 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003042 D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003043 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3044 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003045 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003046 return NULL;
3047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003048 int _end_lineno = _token->end_lineno;
3049 UNUSED(_end_lineno); // Only used by EXTRA macro
3050 int _end_col_offset = _token->end_col_offset;
3051 UNUSED(_end_col_offset); // Only used by EXTRA macro
3052 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003054 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003055 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003056 return NULL;
3057 }
3058 goto done;
3059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003060 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003061 D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3062 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003063 }
3064 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003065 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003066 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003067 return NULL;
3068 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003069 D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003070 Token * _keyword;
3071 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003072 asdl_seq * a;
3073 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003074 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003075 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003076 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003077 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003078 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003079 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003080 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003081 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003082 )
3083 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003084 D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003085 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3086 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003087 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003088 return NULL;
3089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003090 int _end_lineno = _token->end_lineno;
3091 UNUSED(_end_lineno); // Only used by EXTRA macro
3092 int _end_col_offset = _token->end_col_offset;
3093 UNUSED(_end_col_offset); // Only used by EXTRA macro
3094 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3095 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003096 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003097 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003098 return NULL;
3099 }
3100 goto done;
3101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003102 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003103 D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3104 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003106 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003107 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003108 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003109 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003110}
3111
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003112// import_from_targets:
3113// | '(' import_from_as_names ','? ')'
3114// | import_from_as_names !','
3115// | '*'
3116// | invalid_import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003117static asdl_seq*
3118import_from_targets_rule(Parser *p)
3119{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003120 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003121 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003122 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003123 return NULL;
3124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003125 asdl_seq* _res = NULL;
3126 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003127 { // '(' import_from_as_names ','? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003128 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003129 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003130 return NULL;
3131 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003132 D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003133 Token * _literal;
3134 Token * _literal_1;
3135 void *_opt_var;
3136 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003137 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003138 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003139 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003140 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003141 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003142 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003143 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003144 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003145 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003146 )
3147 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003148 D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003149 _res = a;
3150 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003151 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003152 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003153 return NULL;
3154 }
3155 goto done;
3156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003157 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003158 D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3159 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003160 }
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003161 { // import_from_as_names !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003162 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003163 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003164 return NULL;
3165 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003166 D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003167 asdl_seq* import_from_as_names_var;
3168 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003169 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003170 &&
3171 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003172 )
3173 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003174 D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003175 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003176 goto done;
3177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003178 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003179 D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3180 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003181 }
3182 { // '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003183 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003184 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003185 return NULL;
3186 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003187 D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003188 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003189 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003190 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003191 )
3192 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003193 D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003194 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
3195 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003196 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003197 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003198 return NULL;
3199 }
3200 goto done;
3201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003202 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003203 D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3204 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003205 }
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003206 { // invalid_import_from_targets
3207 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003208 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003209 return NULL;
3210 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003211 D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003212 void *invalid_import_from_targets_var;
3213 if (
3214 (invalid_import_from_targets_var = invalid_import_from_targets_rule(p)) // invalid_import_from_targets
3215 )
3216 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003217 D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003218 _res = invalid_import_from_targets_var;
3219 goto done;
3220 }
3221 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003222 D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3223 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003225 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003226 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003227 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003228 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003229}
3230
3231// import_from_as_names: ','.import_from_as_name+
3232static asdl_seq*
3233import_from_as_names_rule(Parser *p)
3234{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003235 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003236 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003237 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003238 return NULL;
3239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003240 asdl_seq* _res = NULL;
3241 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003242 { // ','.import_from_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003243 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003244 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003245 return NULL;
3246 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003247 D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003248 asdl_seq * a;
3249 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003250 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003251 )
3252 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003253 D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003254 _res = a;
3255 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003256 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003257 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003258 return NULL;
3259 }
3260 goto done;
3261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003262 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003263 D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3264 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003266 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003267 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003268 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003269 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003270}
3271
3272// import_from_as_name: NAME ['as' NAME]
3273static alias_ty
3274import_from_as_name_rule(Parser *p)
3275{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003276 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003277 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003278 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003279 return NULL;
3280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003281 alias_ty _res = NULL;
3282 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003283 { // NAME ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003284 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003285 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003286 return NULL;
3287 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003288 D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003289 expr_ty a;
3290 void *b;
3291 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003292 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003293 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003294 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003295 )
3296 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003297 D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003298 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
3299 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003300 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003301 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003302 return NULL;
3303 }
3304 goto done;
3305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003306 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003307 D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3308 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003310 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003311 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003312 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003313 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003314}
3315
3316// dotted_as_names: ','.dotted_as_name+
3317static asdl_seq*
3318dotted_as_names_rule(Parser *p)
3319{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003320 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003321 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003322 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003323 return NULL;
3324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003325 asdl_seq* _res = NULL;
3326 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003327 { // ','.dotted_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003328 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003329 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003330 return NULL;
3331 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003332 D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003333 asdl_seq * a;
3334 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003335 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003336 )
3337 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003338 D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003339 _res = a;
3340 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003341 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003342 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003343 return NULL;
3344 }
3345 goto done;
3346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003347 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003348 D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3349 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003351 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003352 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003353 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003354 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003355}
3356
3357// dotted_as_name: dotted_name ['as' NAME]
3358static alias_ty
3359dotted_as_name_rule(Parser *p)
3360{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003361 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003362 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003363 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003364 return NULL;
3365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003366 alias_ty _res = NULL;
3367 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003368 { // dotted_name ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003369 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003370 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003371 return NULL;
3372 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003373 D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003374 expr_ty a;
3375 void *b;
3376 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003377 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003379 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 )
3381 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003382 D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003383 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
3384 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003385 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003386 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003387 return NULL;
3388 }
3389 goto done;
3390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003391 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003392 D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3393 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003395 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003396 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003397 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003398 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003399}
3400
3401// Left-recursive
3402// dotted_name: dotted_name '.' NAME | NAME
3403static expr_ty dotted_name_raw(Parser *);
3404static expr_ty
3405dotted_name_rule(Parser *p)
3406{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003407 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003408 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003409 if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
3410 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003411 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003413 int _mark = p->mark;
3414 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003415 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003416 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003417 if (tmpvar_0) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003418 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003419 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003421 p->mark = _mark;
3422 void *_raw = dotted_name_raw(p);
3423 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003424 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003425 _resmark = p->mark;
3426 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003428 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003429 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003430 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003431}
3432static expr_ty
3433dotted_name_raw(Parser *p)
3434{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003435 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003436 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003437 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003438 return NULL;
3439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003440 expr_ty _res = NULL;
3441 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003442 { // dotted_name '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003443 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003444 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003445 return NULL;
3446 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003447 D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003448 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003449 expr_ty a;
3450 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003451 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003452 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003453 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003454 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003455 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003456 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003457 )
3458 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003459 D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003460 _res = _PyPegen_join_names_with_dot ( p , a , b );
3461 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003462 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003463 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003464 return NULL;
3465 }
3466 goto done;
3467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003468 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003469 D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3470 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003471 }
3472 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003473 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003474 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003475 return NULL;
3476 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003477 D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003478 expr_ty name_var;
3479 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003480 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003481 )
3482 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003483 D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003484 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003485 goto done;
3486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003487 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003488 D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3489 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003491 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003492 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003493 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003494 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003495}
3496
3497// if_stmt:
3498// | 'if' named_expression ':' block elif_stmt
3499// | 'if' named_expression ':' block else_block?
3500static stmt_ty
3501if_stmt_rule(Parser *p)
3502{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003503 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003504 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003505 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003506 return NULL;
3507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003508 stmt_ty _res = NULL;
3509 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003510 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3511 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003512 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003513 return NULL;
3514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003515 int _start_lineno = p->tokens[_mark]->lineno;
3516 UNUSED(_start_lineno); // Only used by EXTRA macro
3517 int _start_col_offset = p->tokens[_mark]->col_offset;
3518 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003519 { // 'if' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003520 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003521 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003522 return NULL;
3523 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003524 D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003525 Token * _keyword;
3526 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003527 expr_ty a;
3528 asdl_seq* b;
3529 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003530 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003531 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003532 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003533 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003534 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003535 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003536 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003537 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003538 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003539 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003540 )
3541 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003542 D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003543 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3544 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003545 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003546 return NULL;
3547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003548 int _end_lineno = _token->end_lineno;
3549 UNUSED(_end_lineno); // Only used by EXTRA macro
3550 int _end_col_offset = _token->end_col_offset;
3551 UNUSED(_end_col_offset); // Only used by EXTRA macro
3552 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003554 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003555 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003556 return NULL;
3557 }
3558 goto done;
3559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003560 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003561 D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3562 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003563 }
3564 { // 'if' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003565 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003566 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003567 return NULL;
3568 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003569 D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003570 Token * _keyword;
3571 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003572 expr_ty a;
3573 asdl_seq* b;
3574 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003575 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003576 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003577 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003578 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003579 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003580 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003581 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003582 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003583 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003584 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003585 )
3586 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003587 D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003588 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3589 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003590 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003591 return NULL;
3592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003593 int _end_lineno = _token->end_lineno;
3594 UNUSED(_end_lineno); // Only used by EXTRA macro
3595 int _end_col_offset = _token->end_col_offset;
3596 UNUSED(_end_col_offset); // Only used by EXTRA macro
3597 _res = _Py_If ( a , b , c , EXTRA );
3598 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003599 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003600 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003601 return NULL;
3602 }
3603 goto done;
3604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003605 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003606 D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3607 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003609 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003610 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003611 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003612 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003613}
3614
3615// elif_stmt:
3616// | 'elif' named_expression ':' block elif_stmt
3617// | 'elif' named_expression ':' block else_block?
3618static stmt_ty
3619elif_stmt_rule(Parser *p)
3620{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003621 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003622 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003623 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003624 return NULL;
3625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003626 stmt_ty _res = NULL;
3627 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003628 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3629 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003630 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003631 return NULL;
3632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003633 int _start_lineno = p->tokens[_mark]->lineno;
3634 UNUSED(_start_lineno); // Only used by EXTRA macro
3635 int _start_col_offset = p->tokens[_mark]->col_offset;
3636 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003637 { // 'elif' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003638 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003639 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003640 return NULL;
3641 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003642 D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003643 Token * _keyword;
3644 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003645 expr_ty a;
3646 asdl_seq* b;
3647 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003648 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003649 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003650 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003651 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003652 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003653 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003654 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003655 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003656 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003657 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003658 )
3659 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003660 D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003661 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3662 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003663 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003664 return NULL;
3665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003666 int _end_lineno = _token->end_lineno;
3667 UNUSED(_end_lineno); // Only used by EXTRA macro
3668 int _end_col_offset = _token->end_col_offset;
3669 UNUSED(_end_col_offset); // Only used by EXTRA macro
3670 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3671 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003673 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003674 return NULL;
3675 }
3676 goto done;
3677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003678 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003679 D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3680 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003681 }
3682 { // 'elif' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003683 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003684 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003685 return NULL;
3686 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003687 D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003688 Token * _keyword;
3689 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003690 expr_ty a;
3691 asdl_seq* b;
3692 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003693 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003694 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003695 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003696 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003697 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003698 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003699 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003700 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003701 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003702 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003703 )
3704 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003705 D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003706 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3707 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003708 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003709 return NULL;
3710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003711 int _end_lineno = _token->end_lineno;
3712 UNUSED(_end_lineno); // Only used by EXTRA macro
3713 int _end_col_offset = _token->end_col_offset;
3714 UNUSED(_end_col_offset); // Only used by EXTRA macro
3715 _res = _Py_If ( a , b , c , EXTRA );
3716 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003717 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003718 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003719 return NULL;
3720 }
3721 goto done;
3722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003723 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003724 D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3725 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003727 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003728 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003729 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003730 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003731}
3732
3733// else_block: 'else' ':' block
3734static asdl_seq*
3735else_block_rule(Parser *p)
3736{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003737 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003738 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003739 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003740 return NULL;
3741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003742 asdl_seq* _res = NULL;
3743 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003744 { // 'else' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003745 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003746 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003747 return NULL;
3748 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003749 D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003750 Token * _keyword;
3751 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003752 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003753 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003754 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003755 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003756 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003757 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003758 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003759 )
3760 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003761 D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003762 _res = b;
3763 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003764 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003765 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003766 return NULL;
3767 }
3768 goto done;
3769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003770 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003771 D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
3772 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003774 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003775 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003776 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003777 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003778}
3779
3780// while_stmt: 'while' named_expression ':' block else_block?
3781static stmt_ty
3782while_stmt_rule(Parser *p)
3783{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003784 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003785 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003786 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003787 return NULL;
3788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003789 stmt_ty _res = NULL;
3790 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003791 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3792 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003793 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003794 return NULL;
3795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003796 int _start_lineno = p->tokens[_mark]->lineno;
3797 UNUSED(_start_lineno); // Only used by EXTRA macro
3798 int _start_col_offset = p->tokens[_mark]->col_offset;
3799 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003800 { // 'while' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003801 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003802 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003803 return NULL;
3804 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003805 D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003806 Token * _keyword;
3807 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003808 expr_ty a;
3809 asdl_seq* b;
3810 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003811 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003812 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003813 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003814 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003815 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003816 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003817 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003818 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003819 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003820 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003821 )
3822 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003823 D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003824 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3825 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003826 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003827 return NULL;
3828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003829 int _end_lineno = _token->end_lineno;
3830 UNUSED(_end_lineno); // Only used by EXTRA macro
3831 int _end_col_offset = _token->end_col_offset;
3832 UNUSED(_end_col_offset); // Only used by EXTRA macro
3833 _res = _Py_While ( a , b , c , EXTRA );
3834 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003835 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003836 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003837 return NULL;
3838 }
3839 goto done;
3840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003841 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003842 D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3843 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003845 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003846 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003847 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003848 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003849}
3850
Guido van Rossumc001c092020-04-30 12:12:19 -07003851// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003852// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
3853// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003854static stmt_ty
3855for_stmt_rule(Parser *p)
3856{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003857 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003858 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003859 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003860 return NULL;
3861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003862 stmt_ty _res = NULL;
3863 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003864 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3865 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003866 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003867 return NULL;
3868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003869 int _start_lineno = p->tokens[_mark]->lineno;
3870 UNUSED(_start_lineno); // Only used by EXTRA macro
3871 int _start_col_offset = p->tokens[_mark]->col_offset;
3872 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003873 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003874 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003875 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003876 return NULL;
3877 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003878 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003879 Token * _keyword;
3880 Token * _keyword_1;
3881 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003882 asdl_seq* b;
3883 void *el;
3884 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003885 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003886 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003887 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003888 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003889 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003890 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003891 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003892 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003893 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003894 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003895 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003896 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003897 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003898 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003899 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003900 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003902 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003903 )
3904 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003905 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003906 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3907 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003908 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003909 return NULL;
3910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003911 int _end_lineno = _token->end_lineno;
3912 UNUSED(_end_lineno); // Only used by EXTRA macro
3913 int _end_col_offset = _token->end_col_offset;
3914 UNUSED(_end_col_offset); // Only used by EXTRA macro
3915 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3916 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003917 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003918 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003919 return NULL;
3920 }
3921 goto done;
3922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003923 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003924 D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3925 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003926 }
3927 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003928 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003929 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003930 return NULL;
3931 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003932 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003933 Token * _keyword;
3934 Token * _keyword_1;
3935 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003936 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003937 asdl_seq* b;
3938 void *el;
3939 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003940 expr_ty t;
3941 void *tc;
3942 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003943 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003944 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003945 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003946 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003947 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003948 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003949 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003950 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003951 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003952 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003953 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003955 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003957 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003958 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003959 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003960 )
3961 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003962 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003963 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3964 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003965 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003966 return NULL;
3967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003968 int _end_lineno = _token->end_lineno;
3969 UNUSED(_end_lineno); // Only used by EXTRA macro
3970 int _end_col_offset = _token->end_col_offset;
3971 UNUSED(_end_col_offset); // Only used by EXTRA macro
3972 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3973 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003974 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003975 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003976 return NULL;
3977 }
3978 goto done;
3979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003980 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003981 D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3982 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003984 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003985 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003986 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003987 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003988}
3989
3990// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003991// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003992// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003993// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003994// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003995static stmt_ty
3996with_stmt_rule(Parser *p)
3997{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003998 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003999 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004000 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004001 return NULL;
4002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004003 stmt_ty _res = NULL;
4004 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004005 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4006 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004007 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004008 return NULL;
4009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004010 int _start_lineno = p->tokens[_mark]->lineno;
4011 UNUSED(_start_lineno); // Only used by EXTRA macro
4012 int _start_col_offset = p->tokens[_mark]->col_offset;
4013 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01004014 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004015 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004016 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004017 return NULL;
4018 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004019 D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004020 Token * _keyword;
4021 Token * _literal;
4022 Token * _literal_1;
4023 Token * _literal_2;
4024 void *_opt_var;
4025 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004026 asdl_seq * a;
4027 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004028 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004029 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004030 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004031 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004033 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004034 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004035 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01004036 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004037 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004038 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004039 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004041 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004042 )
4043 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004044 D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004045 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4046 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004047 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004048 return NULL;
4049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004050 int _end_lineno = _token->end_lineno;
4051 UNUSED(_end_lineno); // Only used by EXTRA macro
4052 int _end_col_offset = _token->end_col_offset;
4053 UNUSED(_end_col_offset); // Only used by EXTRA macro
4054 _res = _Py_With ( a , b , NULL , EXTRA );
4055 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004056 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004057 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004058 return NULL;
4059 }
4060 goto done;
4061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004062 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004063 D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4064 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004065 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004066 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004067 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004068 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004069 return NULL;
4070 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004071 D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004072 Token * _keyword;
4073 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004074 asdl_seq * a;
4075 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004076 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004077 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004078 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004079 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004080 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004081 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004082 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004083 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004084 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004085 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004086 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004087 )
4088 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004089 D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004090 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4091 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004092 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004093 return NULL;
4094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004095 int _end_lineno = _token->end_lineno;
4096 UNUSED(_end_lineno); // Only used by EXTRA macro
4097 int _end_col_offset = _token->end_col_offset;
4098 UNUSED(_end_col_offset); // Only used by EXTRA macro
4099 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4100 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004101 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004102 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004103 return NULL;
4104 }
4105 goto done;
4106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004107 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004108 D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4109 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004110 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01004111 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004112 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004113 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004114 return NULL;
4115 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004116 D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004117 Token * _keyword;
4118 Token * _literal;
4119 Token * _literal_1;
4120 Token * _literal_2;
4121 void *_opt_var;
4122 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004123 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004124 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004125 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004126 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004127 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004128 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004129 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004130 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004131 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004132 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004133 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004134 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004135 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01004136 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004137 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004138 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004139 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004140 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004141 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004142 )
4143 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004144 D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004145 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4146 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004147 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004148 return NULL;
4149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004150 int _end_lineno = _token->end_lineno;
4151 UNUSED(_end_lineno); // Only used by EXTRA macro
4152 int _end_col_offset = _token->end_col_offset;
4153 UNUSED(_end_col_offset); // Only used by EXTRA macro
4154 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
4155 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004156 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004157 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004158 return NULL;
4159 }
4160 goto done;
4161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004162 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004163 D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4164 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004165 }
4166 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004167 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004168 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004169 return NULL;
4170 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004171 D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004172 Token * _keyword;
4173 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004174 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004175 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004176 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004177 void *tc;
4178 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004179 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004180 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004181 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004182 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004183 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004184 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004185 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004186 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004187 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004188 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004189 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004190 )
4191 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004192 D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004193 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4194 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004195 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004196 return NULL;
4197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004198 int _end_lineno = _token->end_lineno;
4199 UNUSED(_end_lineno); // Only used by EXTRA macro
4200 int _end_col_offset = _token->end_col_offset;
4201 UNUSED(_end_col_offset); // Only used by EXTRA macro
4202 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
4203 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004204 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004205 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004206 return NULL;
4207 }
4208 goto done;
4209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004210 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004211 D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4212 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004214 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004215 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004216 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004217 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004218}
4219
4220// with_item: expression ['as' target]
4221static withitem_ty
4222with_item_rule(Parser *p)
4223{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004224 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004225 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004226 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004227 return NULL;
4228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004229 withitem_ty _res = NULL;
4230 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004231 { // expression ['as' target]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004232 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004233 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004234 return NULL;
4235 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004236 D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' target]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004237 expr_ty e;
4238 void *o;
4239 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004240 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004242 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004243 )
4244 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004245 D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' target]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004246 _res = _Py_withitem ( e , o , p -> arena );
4247 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004248 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004249 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004250 return NULL;
4251 }
4252 goto done;
4253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004254 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004255 D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
4256 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' target]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004258 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004259 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004260 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004261 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004262}
4263
4264// try_stmt:
4265// | 'try' ':' block finally_block
4266// | 'try' ':' block except_block+ else_block? finally_block?
4267static stmt_ty
4268try_stmt_rule(Parser *p)
4269{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004270 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004271 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004272 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004273 return NULL;
4274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004275 stmt_ty _res = NULL;
4276 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004277 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4278 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004279 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004280 return NULL;
4281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004282 int _start_lineno = p->tokens[_mark]->lineno;
4283 UNUSED(_start_lineno); // Only used by EXTRA macro
4284 int _start_col_offset = p->tokens[_mark]->col_offset;
4285 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004286 { // 'try' ':' block finally_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004287 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004288 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004289 return NULL;
4290 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004291 D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block finally_block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004292 Token * _keyword;
4293 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004294 asdl_seq* b;
4295 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004296 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004297 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004298 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004299 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004300 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004301 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004302 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004303 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004304 )
4305 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004306 D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block finally_block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004307 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4308 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004309 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004310 return NULL;
4311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004312 int _end_lineno = _token->end_lineno;
4313 UNUSED(_end_lineno); // Only used by EXTRA macro
4314 int _end_col_offset = _token->end_col_offset;
4315 UNUSED(_end_col_offset); // Only used by EXTRA macro
4316 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
4317 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004318 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004319 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004320 return NULL;
4321 }
4322 goto done;
4323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004324 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004325 D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4326 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block finally_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004327 }
4328 { // 'try' ':' block except_block+ else_block? finally_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004329 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004330 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004331 return NULL;
4332 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004333 D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block except_block+ else_block? finally_block?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004334 Token * _keyword;
4335 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004336 asdl_seq* b;
4337 void *el;
4338 asdl_seq * ex;
4339 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004340 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004341 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004342 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004343 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004344 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004345 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004346 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004347 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004348 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004349 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004350 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004351 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004352 )
4353 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004354 D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block except_block+ else_block? finally_block?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004355 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4356 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004357 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004358 return NULL;
4359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004360 int _end_lineno = _token->end_lineno;
4361 UNUSED(_end_lineno); // Only used by EXTRA macro
4362 int _end_col_offset = _token->end_col_offset;
4363 UNUSED(_end_col_offset); // Only used by EXTRA macro
4364 _res = _Py_Try ( b , ex , el , f , EXTRA );
4365 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004366 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004367 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004368 return NULL;
4369 }
4370 goto done;
4371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004372 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004373 D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4374 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block except_block+ else_block? finally_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004376 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004377 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004378 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004379 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004380}
4381
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03004382// except_block: 'except' expression ['as' NAME] ':' block | 'except' ':' block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004383static excepthandler_ty
4384except_block_rule(Parser *p)
4385{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004386 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004387 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004388 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004389 return NULL;
4390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004391 excepthandler_ty _res = NULL;
4392 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004393 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4394 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004395 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004396 return NULL;
4397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004398 int _start_lineno = p->tokens[_mark]->lineno;
4399 UNUSED(_start_lineno); // Only used by EXTRA macro
4400 int _start_col_offset = p->tokens[_mark]->col_offset;
4401 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03004402 { // 'except' expression ['as' NAME] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004403 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004404 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004405 return NULL;
4406 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004407 D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004408 Token * _keyword;
4409 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004410 asdl_seq* b;
4411 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004412 void *t;
4413 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004414 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004415 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004416 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004417 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03004418 (t = _tmp_48_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004419 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004420 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004421 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004422 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004423 )
4424 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004425 D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004426 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4427 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004428 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004429 return NULL;
4430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004431 int _end_lineno = _token->end_lineno;
4432 UNUSED(_end_lineno); // Only used by EXTRA macro
4433 int _end_col_offset = _token->end_col_offset;
4434 UNUSED(_end_col_offset); // Only used by EXTRA macro
4435 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
4436 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004437 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004438 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004439 return NULL;
4440 }
4441 goto done;
4442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004443 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004444 D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
4445 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004446 }
4447 { // 'except' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004448 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004449 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004450 return NULL;
4451 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004452 D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004453 Token * _keyword;
4454 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004455 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004456 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004457 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004458 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004459 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004460 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004461 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004462 )
4463 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004464 D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004465 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4466 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004467 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004468 return NULL;
4469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004470 int _end_lineno = _token->end_lineno;
4471 UNUSED(_end_lineno); // Only used by EXTRA macro
4472 int _end_col_offset = _token->end_col_offset;
4473 UNUSED(_end_col_offset); // Only used by EXTRA macro
4474 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
4475 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004476 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004477 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004478 return NULL;
4479 }
4480 goto done;
4481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004482 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004483 D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
4484 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004486 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004487 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004488 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004489 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004490}
4491
4492// finally_block: 'finally' ':' block
4493static asdl_seq*
4494finally_block_rule(Parser *p)
4495{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004496 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004497 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004498 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004499 return NULL;
4500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004501 asdl_seq* _res = NULL;
4502 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004503 { // 'finally' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004504 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004505 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004506 return NULL;
4507 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004508 D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004509 Token * _keyword;
4510 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004511 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004512 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004513 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004514 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004515 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004516 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004517 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004518 )
4519 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004520 D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004521 _res = a;
4522 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004523 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004524 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004525 return NULL;
4526 }
4527 goto done;
4528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004529 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004530 D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
4531 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004533 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004534 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004535 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004536 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004537}
4538
4539// return_stmt: 'return' star_expressions?
4540static stmt_ty
4541return_stmt_rule(Parser *p)
4542{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004543 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004544 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004545 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004546 return NULL;
4547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004548 stmt_ty _res = NULL;
4549 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004550 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4551 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004552 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004553 return NULL;
4554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004555 int _start_lineno = p->tokens[_mark]->lineno;
4556 UNUSED(_start_lineno); // Only used by EXTRA macro
4557 int _start_col_offset = p->tokens[_mark]->col_offset;
4558 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004559 { // 'return' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004560 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004561 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004562 return NULL;
4563 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004564 D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004565 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004566 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004567 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004568 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004569 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004570 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004571 )
4572 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004573 D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004574 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4575 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004576 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004577 return NULL;
4578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004579 int _end_lineno = _token->end_lineno;
4580 UNUSED(_end_lineno); // Only used by EXTRA macro
4581 int _end_col_offset = _token->end_col_offset;
4582 UNUSED(_end_col_offset); // Only used by EXTRA macro
4583 _res = _Py_Return ( a , EXTRA );
4584 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004585 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004586 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004587 return NULL;
4588 }
4589 goto done;
4590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004591 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004592 D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4593 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004595 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004596 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004597 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004598 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004599}
4600
4601// raise_stmt: 'raise' expression ['from' expression] | 'raise'
4602static stmt_ty
4603raise_stmt_rule(Parser *p)
4604{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004605 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004606 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004607 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004608 return NULL;
4609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004610 stmt_ty _res = NULL;
4611 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004612 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4613 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004614 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004615 return NULL;
4616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004617 int _start_lineno = p->tokens[_mark]->lineno;
4618 UNUSED(_start_lineno); // Only used by EXTRA macro
4619 int _start_col_offset = p->tokens[_mark]->col_offset;
4620 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004621 { // 'raise' expression ['from' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004622 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004623 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004624 return NULL;
4625 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004626 D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004627 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004628 expr_ty a;
4629 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004630 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004631 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004632 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004633 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004634 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004635 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004636 )
4637 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004638 D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004639 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4640 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004641 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004642 return NULL;
4643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004644 int _end_lineno = _token->end_lineno;
4645 UNUSED(_end_lineno); // Only used by EXTRA macro
4646 int _end_col_offset = _token->end_col_offset;
4647 UNUSED(_end_col_offset); // Only used by EXTRA macro
4648 _res = _Py_Raise ( a , b , EXTRA );
4649 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004650 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004651 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004652 return NULL;
4653 }
4654 goto done;
4655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004656 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004657 D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4658 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression ['from' expression]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004659 }
4660 { // 'raise'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004661 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004662 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004663 return NULL;
4664 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004665 D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004666 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004667 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004668 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004669 )
4670 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004671 D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004672 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4673 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004674 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004675 return NULL;
4676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004677 int _end_lineno = _token->end_lineno;
4678 UNUSED(_end_lineno); // Only used by EXTRA macro
4679 int _end_col_offset = _token->end_col_offset;
4680 UNUSED(_end_col_offset); // Only used by EXTRA macro
4681 _res = _Py_Raise ( NULL , NULL , EXTRA );
4682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004683 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004684 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004685 return NULL;
4686 }
4687 goto done;
4688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004689 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004690 D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4691 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004693 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004694 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004695 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004696 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004697}
4698
4699// function_def: decorators function_def_raw | function_def_raw
4700static stmt_ty
4701function_def_rule(Parser *p)
4702{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004703 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004704 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004705 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004706 return NULL;
4707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004708 stmt_ty _res = NULL;
4709 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004710 { // decorators function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004711 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004712 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004713 return NULL;
4714 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004715 D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004716 asdl_seq* d;
4717 stmt_ty f;
4718 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004719 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004720 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004721 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004722 )
4723 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004724 D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004725 _res = _PyPegen_function_def_decorators ( p , d , f );
4726 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004727 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004728 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004729 return NULL;
4730 }
4731 goto done;
4732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004733 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004734 D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4735 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004736 }
4737 { // function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004738 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004739 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004740 return NULL;
4741 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004742 D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004743 stmt_ty function_def_raw_var;
4744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004745 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004746 )
4747 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004748 D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004749 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004750 goto done;
4751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004752 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004753 D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4754 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004756 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004757 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004758 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004759 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004760}
4761
Guido van Rossumc001c092020-04-30 12:12:19 -07004762// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004763// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
4764// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004765static stmt_ty
4766function_def_raw_rule(Parser *p)
4767{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004768 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004769 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004770 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004771 return NULL;
4772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004773 stmt_ty _res = NULL;
4774 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004775 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4776 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004777 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004778 return NULL;
4779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004780 int _start_lineno = p->tokens[_mark]->lineno;
4781 UNUSED(_start_lineno); // Only used by EXTRA macro
4782 int _start_col_offset = p->tokens[_mark]->col_offset;
4783 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004784 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004785 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004786 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004787 return NULL;
4788 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004789 D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004790 Token * _keyword;
4791 Token * _literal;
4792 Token * _literal_1;
4793 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004794 void *a;
4795 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004796 expr_ty n;
4797 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07004798 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004799 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004800 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004801 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004802 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004803 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004804 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004805 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004806 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004807 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004808 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004809 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004810 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004811 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004812 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004813 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004814 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07004815 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004816 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004817 )
4818 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004819 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"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004820 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4821 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004822 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004823 return NULL;
4824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004825 int _end_lineno = _token->end_lineno;
4826 UNUSED(_end_lineno); // Only used by EXTRA macro
4827 int _end_col_offset = _token->end_col_offset;
4828 UNUSED(_end_col_offset); // Only used by EXTRA macro
4829 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4830 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004831 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004832 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004833 return NULL;
4834 }
4835 goto done;
4836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004837 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004838 D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4839 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004840 }
4841 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004842 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004843 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004844 return NULL;
4845 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004846 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"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004847 Token * _keyword;
4848 Token * _literal;
4849 Token * _literal_1;
4850 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004851 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004852 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004853 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004854 expr_ty n;
4855 void *params;
4856 void *tc;
4857 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004858 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004859 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004860 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004861 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004862 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004863 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004864 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004865 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004866 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004867 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004868 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004869 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004870 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004871 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004872 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004873 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004874 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004875 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004876 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004877 )
4878 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004879 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"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004880 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4881 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004882 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004883 return NULL;
4884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004885 int _end_lineno = _token->end_lineno;
4886 UNUSED(_end_lineno); // Only used by EXTRA macro
4887 int _end_col_offset = _token->end_col_offset;
4888 UNUSED(_end_col_offset); // Only used by EXTRA macro
4889 _res = CHECK_VERSION ( 5 , "Async functions are" , _Py_AsyncFunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
4890 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004891 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004892 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004893 return NULL;
4894 }
4895 goto done;
4896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004897 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004898 D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4899 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004901 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004902 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004903 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004904 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004905}
4906
Guido van Rossumc001c092020-04-30 12:12:19 -07004907// func_type_comment:
4908// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
4909// | invalid_double_type_comments
4910// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01004911static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07004912func_type_comment_rule(Parser *p)
4913{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004914 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -07004915 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004916 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07004917 return NULL;
4918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004919 Token* _res = NULL;
4920 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004921 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004922 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004923 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004924 return NULL;
4925 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004926 D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
Pablo Galindob796b3f2020-05-01 12:32:26 +01004927 Token * newline_var;
4928 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07004929 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004930 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07004931 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004932 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004933 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004934 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07004935 )
4936 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004937 D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004938 _res = t;
4939 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004940 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004941 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07004942 return NULL;
4943 }
4944 goto done;
4945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004946 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004947 D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
4948 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
Guido van Rossumc001c092020-04-30 12:12:19 -07004949 }
4950 { // invalid_double_type_comments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004951 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004952 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004953 return NULL;
4954 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004955 D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
Guido van Rossumc001c092020-04-30 12:12:19 -07004956 void *invalid_double_type_comments_var;
4957 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004958 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07004959 )
4960 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004961 D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004962 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004963 goto done;
4964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004965 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004966 D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
4967 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
Guido van Rossumc001c092020-04-30 12:12:19 -07004968 }
4969 { // TYPE_COMMENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004970 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004971 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004972 return NULL;
4973 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004974 D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
Pablo Galindob796b3f2020-05-01 12:32:26 +01004975 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004976 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004977 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004978 )
4979 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004980 D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004981 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004982 goto done;
4983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004984 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004985 D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
4986 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
Guido van Rossumc001c092020-04-30 12:12:19 -07004987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004988 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004989 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004990 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004991 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004992}
4993
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004994// params: invalid_parameters | parameters
4995static arguments_ty
4996params_rule(Parser *p)
4997{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004998 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004999 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005000 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005001 return NULL;
5002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005003 arguments_ty _res = NULL;
5004 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005005 { // invalid_parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005006 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005007 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005008 return NULL;
5009 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005010 D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005011 void *invalid_parameters_var;
5012 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005013 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005014 )
5015 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005016 D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005017 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005018 goto done;
5019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005020 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005021 D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
5022 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005023 }
5024 { // parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005025 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005026 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005027 return NULL;
5028 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005029 D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005030 arguments_ty parameters_var;
5031 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005032 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005033 )
5034 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005035 D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005036 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005037 goto done;
5038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005039 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005040 D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
5041 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005043 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005044 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005045 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005046 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005047}
5048
5049// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07005050// | slash_no_default param_no_default* param_with_default* star_etc?
5051// | slash_with_default param_with_default* star_etc?
5052// | param_no_default+ param_with_default* star_etc?
5053// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005054// | star_etc
5055static arguments_ty
5056parameters_rule(Parser *p)
5057{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005058 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005059 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005060 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005061 return NULL;
5062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005063 arguments_ty _res = NULL;
5064 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005065 { // slash_no_default param_no_default* param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005066 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005067 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005068 return NULL;
5069 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005070 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?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005071 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07005072 asdl_seq * b;
5073 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005074 void *d;
5075 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005076 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005077 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005078 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005079 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005080 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005081 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005082 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005083 )
5084 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005085 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005086 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5087 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005088 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005089 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005090 return NULL;
5091 }
5092 goto done;
5093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005094 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005095 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5096 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005097 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005098 { // slash_with_default param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005099 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005100 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005101 return NULL;
5102 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005103 D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005104 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07005105 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005106 void *c;
5107 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005108 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005109 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005110 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005112 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005113 )
5114 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005115 D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005116 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5117 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005118 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005119 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005120 return NULL;
5121 }
5122 goto done;
5123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005124 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005125 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5126 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005127 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005128 { // param_no_default+ param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005129 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005130 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005131 return NULL;
5132 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005133 D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005134 asdl_seq * a;
5135 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005136 void *c;
5137 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005138 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005140 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005141 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005142 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005143 )
5144 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005145 D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005146 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5147 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005148 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005149 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005150 return NULL;
5151 }
5152 goto done;
5153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005154 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005155 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5156 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005157 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005158 { // param_with_default+ star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005159 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005160 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005161 return NULL;
5162 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005163 D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005164 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005165 void *b;
5166 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005167 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005169 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005170 )
5171 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005172 D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005173 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5174 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005175 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005176 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005177 return NULL;
5178 }
5179 goto done;
5180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005181 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005182 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5183 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005184 }
5185 { // star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005186 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005187 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005188 return NULL;
5189 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005190 D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005191 StarEtc* a;
5192 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005193 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005194 )
5195 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005196 D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005197 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5198 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005199 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005200 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005201 return NULL;
5202 }
5203 goto done;
5204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005205 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005206 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5207 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005209 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005210 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005211 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005212 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005213}
5214
Guido van Rossumc001c092020-04-30 12:12:19 -07005215// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005216static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07005217slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005218{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005219 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005220 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005221 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005222 return NULL;
5223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005224 asdl_seq* _res = NULL;
5225 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005226 { // param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005227 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005228 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005229 return NULL;
5230 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005231 D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005232 Token * _literal;
5233 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07005234 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005236 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005237 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005238 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005239 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005240 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07005241 )
5242 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005243 D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005244 _res = a;
5245 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005246 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005247 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005248 return NULL;
5249 }
5250 goto done;
5251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005252 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005253 D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5254 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005255 }
5256 { // param_no_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005257 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005258 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005259 return NULL;
5260 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005261 D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005262 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005263 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07005264 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005265 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07005266 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005267 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07005268 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005269 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005270 )
5271 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005272 D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005273 _res = a;
5274 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005275 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005276 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005277 return NULL;
5278 }
5279 goto done;
5280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005281 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005282 D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5283 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005285 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005286 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005287 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005288 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005289}
5290
Guido van Rossumc001c092020-04-30 12:12:19 -07005291// slash_with_default:
5292// | param_no_default* param_with_default+ '/' ','
5293// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005294static SlashWithDefault*
5295slash_with_default_rule(Parser *p)
5296{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005297 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005298 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005299 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005300 return NULL;
5301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005302 SlashWithDefault* _res = NULL;
5303 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005304 { // param_no_default* param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005305 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005306 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005307 return NULL;
5308 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005309 D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005310 Token * _literal;
5311 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07005312 asdl_seq * a;
5313 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005314 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005315 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005316 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005317 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005318 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005319 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005320 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005321 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07005322 )
5323 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005324 D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005325 _res = _PyPegen_slash_with_default ( p , a , b );
5326 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005327 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005328 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005329 return NULL;
5330 }
5331 goto done;
5332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005333 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005334 D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5335 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005336 }
5337 { // param_no_default* param_with_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005338 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005339 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005340 return NULL;
5341 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005342 D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005343 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005344 asdl_seq * a;
5345 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07005346 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005347 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07005348 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005349 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07005350 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005351 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07005352 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005353 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005354 )
5355 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005356 D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005357 _res = _PyPegen_slash_with_default ( p , a , b );
5358 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005360 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005361 return NULL;
5362 }
5363 goto done;
5364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005365 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005366 D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5367 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005369 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005370 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005371 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005372 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005373}
5374
5375// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07005376// | '*' param_no_default param_maybe_default* kwds?
5377// | '*' ',' param_maybe_default+ kwds?
5378// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005379// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005380static StarEtc*
5381star_etc_rule(Parser *p)
5382{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005383 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005384 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005385 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005386 return NULL;
5387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005388 StarEtc* _res = NULL;
5389 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005390 { // '*' param_no_default param_maybe_default* kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005391 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005392 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005393 return NULL;
5394 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005395 D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005396 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005397 arg_ty a;
5398 asdl_seq * b;
5399 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005400 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005401 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005402 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005403 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005404 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005405 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005406 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005407 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005408 )
5409 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005410 D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005411 _res = _PyPegen_star_etc ( p , a , b , c );
5412 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005413 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005414 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005415 return NULL;
5416 }
5417 goto done;
5418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005419 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005420 D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5421 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005422 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005423 { // '*' ',' param_maybe_default+ kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005424 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005425 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005426 return NULL;
5427 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005428 D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005429 Token * _literal;
5430 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005431 asdl_seq * b;
5432 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005433 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005434 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005435 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005436 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005437 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005438 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005439 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005440 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005441 )
5442 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005443 D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005444 _res = _PyPegen_star_etc ( p , NULL , b , c );
5445 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005446 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005447 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005448 return NULL;
5449 }
5450 goto done;
5451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005452 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005453 D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5454 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005455 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005456 { // kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005457 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005458 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005459 return NULL;
5460 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005461 D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005462 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005463 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005464 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005465 )
5466 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005467 D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005468 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5469 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005470 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005471 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005472 return NULL;
5473 }
5474 goto done;
5475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005476 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005477 D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5478 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005479 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005480 { // invalid_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005481 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005482 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005483 return NULL;
5484 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005485 D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005486 void *invalid_star_etc_var;
5487 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005488 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005489 )
5490 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005491 D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005492 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005493 goto done;
5494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005495 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005496 D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5497 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005499 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005500 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005501 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005502 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005503}
5504
Guido van Rossumc001c092020-04-30 12:12:19 -07005505// kwds: '**' param_no_default
5506static arg_ty
5507kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005508{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005509 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005510 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005511 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005512 return NULL;
5513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005514 arg_ty _res = NULL;
5515 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005516 { // '**' param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005517 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005518 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005519 return NULL;
5520 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005521 D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005522 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005523 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005524 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005525 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07005526 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005527 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07005528 )
5529 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005530 D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005531 _res = a;
5532 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005533 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005534 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005535 return NULL;
5536 }
5537 goto done;
5538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005539 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005540 D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5541 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005543 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07005544 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005545 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005546 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07005547}
5548
5549// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
5550static arg_ty
5551param_no_default_rule(Parser *p)
5552{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005553 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -07005554 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005555 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005556 return NULL;
5557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005558 arg_ty _res = NULL;
5559 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005560 { // param ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005561 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005562 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005563 return NULL;
5564 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005565 D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005566 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005567 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07005568 void *tc;
5569 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005570 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005571 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005572 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005573 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005574 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 )
5576 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005577 D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005578 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5579 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005580 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005581 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005582 return NULL;
5583 }
5584 goto done;
5585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005586 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005587 D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5588 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005589 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005590 { // param TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005591 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005592 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005593 return NULL;
5594 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005595 D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005596 arg_ty a;
5597 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005598 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005599 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005600 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005601 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07005602 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005603 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005604 )
5605 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005606 D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005607 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5608 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005609 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005610 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005611 return NULL;
5612 }
5613 goto done;
5614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005615 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005616 D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5617 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005619 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005620 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005621 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005622 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005623}
5624
Guido van Rossumc001c092020-04-30 12:12:19 -07005625// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005626static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07005627param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005628{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005629 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005630 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005631 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005632 return NULL;
5633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005634 NameDefaultPair* _res = NULL;
5635 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005636 { // param default ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005637 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005638 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005639 return NULL;
5640 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005641 D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005642 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005643 arg_ty a;
5644 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07005645 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005646 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005647 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005648 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005649 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005650 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005651 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07005652 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005653 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005654 )
5655 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005656 D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005657 _res = _PyPegen_name_default_pair ( p , a , c , tc );
5658 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005659 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005660 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005661 return NULL;
5662 }
5663 goto done;
5664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005665 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005666 D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5667 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005668 }
5669 { // param default TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005670 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005671 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005672 return NULL;
5673 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005674 D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005675 arg_ty a;
5676 expr_ty c;
5677 void *tc;
5678 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005679 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005680 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005681 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07005682 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005683 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07005684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005685 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07005686 )
5687 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005688 D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005689 _res = _PyPegen_name_default_pair ( p , a , c , tc );
5690 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005691 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005692 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005693 return NULL;
5694 }
5695 goto done;
5696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005697 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005698 D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5699 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005701 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005702 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005703 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005704 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005705}
5706
Guido van Rossumc001c092020-04-30 12:12:19 -07005707// param_maybe_default:
5708// | param default? ',' TYPE_COMMENT?
5709// | param default? TYPE_COMMENT? &')'
5710static NameDefaultPair*
5711param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005712{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005713 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005714 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005715 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005716 return NULL;
5717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005718 NameDefaultPair* _res = NULL;
5719 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005720 { // param default? ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005721 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005722 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005723 return NULL;
5724 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005725 D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005726 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005727 arg_ty a;
5728 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07005729 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005730 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005731 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005732 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005733 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07005734 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005735 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07005736 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005737 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005738 )
5739 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005740 D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005741 _res = _PyPegen_name_default_pair ( p , a , c , tc );
5742 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005743 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005744 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005745 return NULL;
5746 }
5747 goto done;
5748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005749 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005750 D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5751 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005752 }
5753 { // param default? TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005754 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005755 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005756 return NULL;
5757 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005758 D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005759 arg_ty a;
5760 void *c;
5761 void *tc;
5762 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005763 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005764 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005765 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07005766 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005767 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07005768 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005769 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07005770 )
5771 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005772 D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005773 _res = _PyPegen_name_default_pair ( p , a , c , tc );
5774 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005775 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005776 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005777 return NULL;
5778 }
5779 goto done;
5780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005781 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005782 D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5783 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005785 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005786 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005787 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005788 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005789}
5790
Guido van Rossumc001c092020-04-30 12:12:19 -07005791// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005792static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07005793param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005794{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005795 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005796 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005797 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005798 return NULL;
5799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005800 arg_ty _res = NULL;
5801 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005802 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5803 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005804 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005805 return NULL;
5806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005807 int _start_lineno = p->tokens[_mark]->lineno;
5808 UNUSED(_start_lineno); // Only used by EXTRA macro
5809 int _start_col_offset = p->tokens[_mark]->col_offset;
5810 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07005811 { // NAME annotation?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005812 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005813 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005814 return NULL;
5815 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005816 D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005817 expr_ty a;
5818 void *b;
5819 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005820 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005821 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005822 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005823 )
5824 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005825 D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005826 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5827 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005828 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005829 return NULL;
5830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005831 int _end_lineno = _token->end_lineno;
5832 UNUSED(_end_lineno); // Only used by EXTRA macro
5833 int _end_col_offset = _token->end_col_offset;
5834 UNUSED(_end_col_offset); // Only used by EXTRA macro
5835 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
5836 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005838 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005839 return NULL;
5840 }
5841 goto done;
5842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005843 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005844 D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5845 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005847 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005848 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005849 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005850 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005851}
5852
Guido van Rossumc001c092020-04-30 12:12:19 -07005853// annotation: ':' expression
5854static expr_ty
5855annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005856{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005857 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005858 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005859 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005860 return NULL;
5861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005862 expr_ty _res = NULL;
5863 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005864 { // ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005865 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005866 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005867 return NULL;
5868 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005869 D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005870 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005871 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005872 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005873 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005875 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005876 )
5877 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005878 D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005879 _res = a;
5880 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005881 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005882 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005883 return NULL;
5884 }
5885 goto done;
5886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005887 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005888 D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5889 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005891 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005892 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005893 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005894 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005895}
5896
Guido van Rossumc001c092020-04-30 12:12:19 -07005897// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005898static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07005899default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005900{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005901 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005902 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005903 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005904 return NULL;
5905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005906 expr_ty _res = NULL;
5907 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005908 { // '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005909 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005910 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005911 return NULL;
5912 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005913 D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005914 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005915 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005916 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005917 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07005918 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005919 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005920 )
5921 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005922 D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005923 _res = a;
5924 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005925 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005926 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005927 return NULL;
5928 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005929 goto done;
5930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005931 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005932 D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5933 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005935 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005936 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005937 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005938 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005939}
5940
5941// decorators: (('@' named_expression NEWLINE))+
5942static asdl_seq*
5943decorators_rule(Parser *p)
5944{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005945 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005946 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005947 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005948 return NULL;
5949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005950 asdl_seq* _res = NULL;
5951 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005952 { // (('@' named_expression NEWLINE))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005953 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005954 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005955 return NULL;
5956 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005957 D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005958 asdl_seq * a;
5959 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005960 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005961 )
5962 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005963 D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005964 _res = a;
5965 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005966 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005967 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005968 return NULL;
5969 }
5970 goto done;
5971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005972 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005973 D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
5974 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005976 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005977 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005978 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005979 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005980}
5981
5982// class_def: decorators class_def_raw | class_def_raw
5983static stmt_ty
5984class_def_rule(Parser *p)
5985{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005986 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005987 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005988 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005989 return NULL;
5990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005991 stmt_ty _res = NULL;
5992 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005993 { // decorators class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005994 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005995 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005996 return NULL;
5997 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005998 D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005999 asdl_seq* a;
6000 stmt_ty b;
6001 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006002 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006004 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006005 )
6006 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006007 D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006008 _res = _PyPegen_class_def_decorators ( p , a , b );
6009 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006010 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006011 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006012 return NULL;
6013 }
6014 goto done;
6015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006016 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006017 D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
6018 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006019 }
6020 { // class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006021 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006022 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006023 return NULL;
6024 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006025 D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006026 stmt_ty class_def_raw_var;
6027 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006028 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006029 )
6030 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006031 D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006032 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006033 goto done;
6034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006035 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006036 D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
6037 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006039 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006040 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006041 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006042 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006043}
6044
6045// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
6046static stmt_ty
6047class_def_raw_rule(Parser *p)
6048{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006049 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006050 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006051 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006052 return NULL;
6053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006054 stmt_ty _res = NULL;
6055 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006056 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6057 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006058 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006059 return NULL;
6060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006061 int _start_lineno = p->tokens[_mark]->lineno;
6062 UNUSED(_start_lineno); // Only used by EXTRA macro
6063 int _start_col_offset = p->tokens[_mark]->col_offset;
6064 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006065 { // 'class' NAME ['(' arguments? ')'] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006066 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006067 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006068 return NULL;
6069 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006070 D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006071 Token * _keyword;
6072 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006073 expr_ty a;
6074 void *b;
6075 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006076 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006077 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006078 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006079 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006080 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006081 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006082 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006083 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006084 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006085 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006086 )
6087 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006088 D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006089 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6090 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006091 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006092 return NULL;
6093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006094 int _end_lineno = _token->end_lineno;
6095 UNUSED(_end_lineno); // Only used by EXTRA macro
6096 int _end_col_offset = _token->end_col_offset;
6097 UNUSED(_end_col_offset); // Only used by EXTRA macro
6098 _res = _Py_ClassDef ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , EXTRA );
6099 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006100 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006101 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006102 return NULL;
6103 }
6104 goto done;
6105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006106 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006107 D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
6108 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006110 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006111 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006112 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006113 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006114}
6115
6116// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
6117static asdl_seq*
6118block_rule(Parser *p)
6119{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006120 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006121 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006122 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006123 return NULL;
6124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006125 asdl_seq* _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006126 if (_PyPegen_is_memoized(p, block_type, &_res)) {
6127 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006128 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006130 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006131 { // NEWLINE INDENT statements DEDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006132 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006133 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006134 return NULL;
6135 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006136 D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006137 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01006138 Token * dedent_var;
6139 Token * indent_var;
6140 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006141 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006142 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006143 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006144 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006145 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006146 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006147 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006148 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006149 )
6150 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006151 D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006152 _res = a;
6153 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006154 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006155 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006156 return NULL;
6157 }
6158 goto done;
6159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006160 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006161 D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
6162 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006163 }
6164 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006165 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006166 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006167 return NULL;
6168 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006169 D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006170 asdl_seq* simple_stmt_var;
6171 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006172 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006173 )
6174 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006175 D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006176 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006177 goto done;
6178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006179 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006180 D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
6181 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006182 }
6183 { // invalid_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006184 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006185 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006186 return NULL;
6187 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006188 D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006189 void *invalid_block_var;
6190 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006191 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006192 )
6193 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006194 D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006195 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006196 goto done;
6197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006198 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006199 D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
6200 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006202 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006203 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006204 _PyPegen_insert_memo(p, _mark, block_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01006205 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006206 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006207}
6208
6209// expressions_list: ','.star_expression+ ','?
6210static asdl_seq*
6211expressions_list_rule(Parser *p)
6212{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006213 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006214 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006215 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006216 return NULL;
6217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006218 asdl_seq* _res = NULL;
6219 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006220 { // ','.star_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006221 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006222 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006223 return NULL;
6224 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006225 D(fprintf(stderr, "%*c> expressions_list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_expression+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006226 void *_opt_var;
6227 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006228 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006229 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006230 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006231 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006232 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006233 )
6234 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006235 D(fprintf(stderr, "%*c+ expressions_list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_expression+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006236 _res = a;
6237 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006238 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006239 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006240 return NULL;
6241 }
6242 goto done;
6243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006244 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006245 D(fprintf(stderr, "%*c%s expressions_list[%d-%d]: %s failed!\n", p->level, ' ',
6246 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_expression+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006248 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006249 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006250 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006251 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006252}
6253
6254// star_expressions:
6255// | star_expression ((',' star_expression))+ ','?
6256// | star_expression ','
6257// | star_expression
6258static expr_ty
6259star_expressions_rule(Parser *p)
6260{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006261 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006262 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006263 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006264 return NULL;
6265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006266 expr_ty _res = NULL;
6267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6269 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006270 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006271 return NULL;
6272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006273 int _start_lineno = p->tokens[_mark]->lineno;
6274 UNUSED(_start_lineno); // Only used by EXTRA macro
6275 int _start_col_offset = p->tokens[_mark]->col_offset;
6276 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006277 { // star_expression ((',' star_expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006278 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006279 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006280 return NULL;
6281 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006282 D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006283 void *_opt_var;
6284 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006285 expr_ty a;
6286 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006287 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006288 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006289 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006290 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006291 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006292 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006293 )
6294 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006295 D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006296 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6297 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006298 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006299 return NULL;
6300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006301 int _end_lineno = _token->end_lineno;
6302 UNUSED(_end_lineno); // Only used by EXTRA macro
6303 int _end_col_offset = _token->end_col_offset;
6304 UNUSED(_end_col_offset); // Only used by EXTRA macro
6305 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
6306 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006307 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006308 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006309 return NULL;
6310 }
6311 goto done;
6312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006313 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006314 D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
6315 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006316 }
6317 { // star_expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006318 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006319 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006320 return NULL;
6321 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006322 D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006323 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006324 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006325 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006326 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006327 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006328 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006329 )
6330 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006331 D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006332 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6333 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006334 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006335 return NULL;
6336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006337 int _end_lineno = _token->end_lineno;
6338 UNUSED(_end_lineno); // Only used by EXTRA macro
6339 int _end_col_offset = _token->end_col_offset;
6340 UNUSED(_end_col_offset); // Only used by EXTRA macro
6341 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
6342 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006343 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006344 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006345 return NULL;
6346 }
6347 goto done;
6348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006349 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006350 D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
6351 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006352 }
6353 { // star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006354 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006355 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006356 return NULL;
6357 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006358 D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006359 expr_ty star_expression_var;
6360 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006361 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006362 )
6363 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006364 D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006365 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006366 goto done;
6367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006368 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006369 D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
6370 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006372 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006373 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006374 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006375 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006376}
6377
6378// star_expression: '*' bitwise_or | expression
6379static expr_ty
6380star_expression_rule(Parser *p)
6381{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006382 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006383 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006384 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006385 return NULL;
6386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006387 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006388 if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
6389 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006390 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006392 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006393 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6394 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006395 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006396 return NULL;
6397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006398 int _start_lineno = p->tokens[_mark]->lineno;
6399 UNUSED(_start_lineno); // Only used by EXTRA macro
6400 int _start_col_offset = p->tokens[_mark]->col_offset;
6401 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006402 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006403 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006404 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006405 return NULL;
6406 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006407 D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006408 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006409 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006410 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006411 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006412 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006413 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006414 )
6415 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006416 D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006417 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6418 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006419 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006420 return NULL;
6421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006422 int _end_lineno = _token->end_lineno;
6423 UNUSED(_end_lineno); // Only used by EXTRA macro
6424 int _end_col_offset = _token->end_col_offset;
6425 UNUSED(_end_col_offset); // Only used by EXTRA macro
6426 _res = _Py_Starred ( a , Load , EXTRA );
6427 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006428 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006429 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006430 return NULL;
6431 }
6432 goto done;
6433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006434 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006435 D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
6436 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006437 }
6438 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006439 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006440 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006441 return NULL;
6442 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006443 D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006444 expr_ty expression_var;
6445 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006446 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006447 )
6448 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006449 D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006450 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006451 goto done;
6452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006453 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006454 D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
6455 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006457 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006458 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006459 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01006460 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006461 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006462}
6463
6464// star_named_expressions: ','.star_named_expression+ ','?
6465static asdl_seq*
6466star_named_expressions_rule(Parser *p)
6467{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006468 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006469 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006470 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006471 return NULL;
6472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006473 asdl_seq* _res = NULL;
6474 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006475 { // ','.star_named_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006476 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006477 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006478 return NULL;
6479 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006480 D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006481 void *_opt_var;
6482 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006483 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006484 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006485 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006486 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006487 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006488 )
6489 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006490 D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006491 _res = a;
6492 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006493 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006494 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006495 return NULL;
6496 }
6497 goto done;
6498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006499 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006500 D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
6501 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006503 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006504 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006505 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006506 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006507}
6508
6509// star_named_expression: '*' bitwise_or | named_expression
6510static expr_ty
6511star_named_expression_rule(Parser *p)
6512{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006513 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006514 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006515 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006516 return NULL;
6517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006518 expr_ty _res = NULL;
6519 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006520 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6521 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006522 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006523 return NULL;
6524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006525 int _start_lineno = p->tokens[_mark]->lineno;
6526 UNUSED(_start_lineno); // Only used by EXTRA macro
6527 int _start_col_offset = p->tokens[_mark]->col_offset;
6528 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006529 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006530 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006531 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006532 return NULL;
6533 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006534 D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006535 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006536 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006537 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006538 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006539 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006540 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006541 )
6542 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006543 D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006544 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6545 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006546 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006547 return NULL;
6548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006549 int _end_lineno = _token->end_lineno;
6550 UNUSED(_end_lineno); // Only used by EXTRA macro
6551 int _end_col_offset = _token->end_col_offset;
6552 UNUSED(_end_col_offset); // Only used by EXTRA macro
6553 _res = _Py_Starred ( a , Load , EXTRA );
6554 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006555 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006556 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006557 return NULL;
6558 }
6559 goto done;
6560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006561 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006562 D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6563 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006564 }
6565 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006566 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006567 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006568 return NULL;
6569 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006570 D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006571 expr_ty named_expression_var;
6572 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006573 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006574 )
6575 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006576 D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006577 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006578 goto done;
6579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006580 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006581 D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6582 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006584 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006585 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006586 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006587 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006588}
6589
6590// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
6591static expr_ty
6592named_expression_rule(Parser *p)
6593{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006594 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006595 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006596 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006597 return NULL;
6598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006599 expr_ty _res = NULL;
6600 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006601 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6602 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006603 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006604 return NULL;
6605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006606 int _start_lineno = p->tokens[_mark]->lineno;
6607 UNUSED(_start_lineno); // Only used by EXTRA macro
6608 int _start_col_offset = p->tokens[_mark]->col_offset;
6609 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006610 { // NAME ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006611 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006612 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006613 return NULL;
6614 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006615 D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006616 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006617 expr_ty a;
6618 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006619 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006620 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006621 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006622 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006623 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006624 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006625 )
6626 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006627 D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006628 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6629 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006630 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006631 return NULL;
6632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006633 int _end_lineno = _token->end_lineno;
6634 UNUSED(_end_lineno); // Only used by EXTRA macro
6635 int _end_col_offset = _token->end_col_offset;
6636 UNUSED(_end_col_offset); // Only used by EXTRA macro
6637 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
6638 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006639 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006640 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006641 return NULL;
6642 }
6643 goto done;
6644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006645 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006646 D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6647 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006648 }
6649 { // expression !':='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006650 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006651 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006652 return NULL;
6653 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006654 D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006655 expr_ty expression_var;
6656 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006657 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006658 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006659 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006660 )
6661 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006662 D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006663 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006664 goto done;
6665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006666 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006667 D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6668 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006669 }
6670 { // invalid_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006671 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006672 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006673 return NULL;
6674 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006675 D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006676 void *invalid_named_expression_var;
6677 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006678 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006679 )
6680 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006681 D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006682 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006683 goto done;
6684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006685 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006686 D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6687 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006689 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006690 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006691 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006692 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006693}
6694
6695// annotated_rhs: yield_expr | star_expressions
6696static expr_ty
6697annotated_rhs_rule(Parser *p)
6698{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006699 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006700 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006701 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006702 return NULL;
6703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006704 expr_ty _res = NULL;
6705 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006706 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006707 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006708 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006709 return NULL;
6710 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006711 D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006712 expr_ty yield_expr_var;
6713 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006714 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006715 )
6716 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006717 D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006718 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006719 goto done;
6720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006721 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006722 D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
6723 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006724 }
6725 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006726 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006727 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006728 return NULL;
6729 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006730 D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006731 expr_ty star_expressions_var;
6732 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006733 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006734 )
6735 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006736 D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006737 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006738 goto done;
6739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006740 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006741 D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
6742 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006744 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006745 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006746 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006747 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006748}
6749
6750// expressions: expression ((',' expression))+ ','? | expression ',' | expression
6751static expr_ty
6752expressions_rule(Parser *p)
6753{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006754 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006755 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006756 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006757 return NULL;
6758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006759 expr_ty _res = NULL;
6760 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006761 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6762 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006763 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006764 return NULL;
6765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006766 int _start_lineno = p->tokens[_mark]->lineno;
6767 UNUSED(_start_lineno); // Only used by EXTRA macro
6768 int _start_col_offset = p->tokens[_mark]->col_offset;
6769 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006770 { // expression ((',' expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006771 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006772 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006773 return NULL;
6774 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006775 D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006776 void *_opt_var;
6777 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006778 expr_ty a;
6779 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006780 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006781 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006782 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006783 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006784 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006785 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006786 )
6787 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006788 D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006789 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6790 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006791 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006792 return NULL;
6793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006794 int _end_lineno = _token->end_lineno;
6795 UNUSED(_end_lineno); // Only used by EXTRA macro
6796 int _end_col_offset = _token->end_col_offset;
6797 UNUSED(_end_col_offset); // Only used by EXTRA macro
6798 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
6799 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006800 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006801 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006802 return NULL;
6803 }
6804 goto done;
6805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006806 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006807 D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
6808 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006809 }
6810 { // expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006811 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006812 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006813 return NULL;
6814 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006815 D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006816 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006817 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006818 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006819 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006820 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006821 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006822 )
6823 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006824 D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006825 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6826 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006827 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006828 return NULL;
6829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006830 int _end_lineno = _token->end_lineno;
6831 UNUSED(_end_lineno); // Only used by EXTRA macro
6832 int _end_col_offset = _token->end_col_offset;
6833 UNUSED(_end_col_offset); // Only used by EXTRA macro
6834 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
6835 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006836 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006837 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006838 return NULL;
6839 }
6840 goto done;
6841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006842 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006843 D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
6844 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006845 }
6846 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006847 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006848 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006849 return NULL;
6850 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006851 D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006852 expr_ty expression_var;
6853 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006854 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006855 )
6856 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006857 D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006858 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006859 goto done;
6860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006861 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006862 D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
6863 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006865 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006866 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006867 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006868 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006869}
6870
6871// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
6872static expr_ty
6873expression_rule(Parser *p)
6874{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006875 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006876 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006877 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006878 return NULL;
6879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006880 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006881 if (_PyPegen_is_memoized(p, expression_type, &_res)) {
6882 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006883 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006885 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006886 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6887 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006888 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006889 return NULL;
6890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006891 int _start_lineno = p->tokens[_mark]->lineno;
6892 UNUSED(_start_lineno); // Only used by EXTRA macro
6893 int _start_col_offset = p->tokens[_mark]->col_offset;
6894 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006895 { // disjunction 'if' disjunction 'else' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006896 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006897 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006898 return NULL;
6899 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006900 D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006901 Token * _keyword;
6902 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006903 expr_ty a;
6904 expr_ty b;
6905 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006906 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006907 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006908 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006909 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006910 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006911 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006912 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006913 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006914 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006915 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006916 )
6917 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006918 D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006919 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6920 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006921 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006922 return NULL;
6923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006924 int _end_lineno = _token->end_lineno;
6925 UNUSED(_end_lineno); // Only used by EXTRA macro
6926 int _end_col_offset = _token->end_col_offset;
6927 UNUSED(_end_col_offset); // Only used by EXTRA macro
6928 _res = _Py_IfExp ( b , a , c , EXTRA );
6929 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006930 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006931 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006932 return NULL;
6933 }
6934 goto done;
6935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006936 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006937 D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
6938 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006939 }
6940 { // disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006941 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006942 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006943 return NULL;
6944 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006945 D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006946 expr_ty disjunction_var;
6947 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006948 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006949 )
6950 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006951 D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006952 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006953 goto done;
6954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006955 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006956 D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
6957 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006958 }
6959 { // lambdef
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006960 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006961 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006962 return NULL;
6963 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006964 D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006965 expr_ty lambdef_var;
6966 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006967 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006968 )
6969 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006970 D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006971 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006972 goto done;
6973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006974 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006975 D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
6976 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006978 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006979 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006980 _PyPegen_insert_memo(p, _mark, expression_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01006981 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006982 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006983}
6984
Pablo Galindoc6483c92020-06-10 14:07:06 +01006985// lambdef: 'lambda' lambda_params? ':' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006986static expr_ty
6987lambdef_rule(Parser *p)
6988{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006989 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006990 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006991 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006992 return NULL;
6993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006994 expr_ty _res = NULL;
6995 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006996 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6997 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006998 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006999 return NULL;
7000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007001 int _start_lineno = p->tokens[_mark]->lineno;
7002 UNUSED(_start_lineno); // Only used by EXTRA macro
7003 int _start_col_offset = p->tokens[_mark]->col_offset;
7004 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc6483c92020-06-10 14:07:06 +01007005 { // 'lambda' lambda_params? ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007006 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007007 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007008 return NULL;
7009 }
Pablo Galindoc6483c92020-06-10 14:07:06 +01007010 D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007011 Token * _keyword;
7012 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007013 void *a;
7014 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007015 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007016 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007017 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +01007018 (a = lambda_params_rule(p), 1) // lambda_params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007019 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007020 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007021 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007022 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007023 )
7024 {
Pablo Galindoc6483c92020-06-10 14:07:06 +01007025 D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007026 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7027 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007028 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007029 return NULL;
7030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007031 int _end_lineno = _token->end_lineno;
7032 UNUSED(_end_lineno); // Only used by EXTRA macro
7033 int _end_col_offset = _token->end_col_offset;
7034 UNUSED(_end_col_offset); // Only used by EXTRA macro
7035 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
7036 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007037 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007038 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007039 return NULL;
7040 }
7041 goto done;
7042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007043 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007044 D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindoc6483c92020-06-10 14:07:06 +01007045 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
7046 }
7047 _res = NULL;
7048 done:
7049 D(p->level--);
7050 return _res;
7051}
7052
7053// lambda_params: invalid_lambda_parameters | lambda_parameters
7054static arguments_ty
7055lambda_params_rule(Parser *p)
7056{
7057 D(p->level++);
7058 if (p->error_indicator) {
7059 D(p->level--);
7060 return NULL;
7061 }
7062 arguments_ty _res = NULL;
7063 int _mark = p->mark;
7064 { // invalid_lambda_parameters
7065 if (p->error_indicator) {
7066 D(p->level--);
7067 return NULL;
7068 }
7069 D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
7070 void *invalid_lambda_parameters_var;
7071 if (
7072 (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p)) // invalid_lambda_parameters
7073 )
7074 {
7075 D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
7076 _res = invalid_lambda_parameters_var;
7077 goto done;
7078 }
7079 p->mark = _mark;
7080 D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
7081 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
7082 }
7083 { // lambda_parameters
7084 if (p->error_indicator) {
7085 D(p->level--);
7086 return NULL;
7087 }
7088 D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
7089 arguments_ty lambda_parameters_var;
7090 if (
7091 (lambda_parameters_var = lambda_parameters_rule(p)) // lambda_parameters
7092 )
7093 {
7094 D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
7095 _res = lambda_parameters_var;
7096 goto done;
7097 }
7098 p->mark = _mark;
7099 D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
7100 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007102 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007103 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007104 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007105 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007106}
7107
7108// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07007109// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
7110// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
7111// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
7112// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007113// | lambda_star_etc
7114static arguments_ty
7115lambda_parameters_rule(Parser *p)
7116{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007117 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007118 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007119 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007120 return NULL;
7121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007122 arguments_ty _res = NULL;
7123 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007124 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007125 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007126 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007127 return NULL;
7128 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007129 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?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007130 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007131 asdl_seq * b;
7132 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133 void *d;
7134 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007135 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007136 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007137 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007138 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007139 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007140 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007141 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007142 )
7143 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007144 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007145 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
7146 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007147 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007148 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007149 return NULL;
7150 }
7151 goto done;
7152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007153 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007154 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7155 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007156 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007157 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007158 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007159 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007160 return NULL;
7161 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007162 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?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007163 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007164 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007165 void *c;
7166 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007167 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007168 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007169 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007170 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007171 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007172 )
7173 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007174 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007175 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
7176 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007177 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007178 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007179 return NULL;
7180 }
7181 goto done;
7182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007183 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007184 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7185 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007186 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007187 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007188 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007189 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007190 return NULL;
7191 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007192 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?"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007193 asdl_seq * a;
7194 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007195 void *c;
7196 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007197 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007198 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007199 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007200 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007201 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007202 )
7203 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007204 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007205 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
7206 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007207 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007208 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007209 return NULL;
7210 }
7211 goto done;
7212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007213 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007214 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7215 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007216 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007217 { // lambda_param_with_default+ lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007218 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007219 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007220 return NULL;
7221 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007222 D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007223 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007224 void *b;
7225 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007226 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007227 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007228 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007229 )
7230 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007231 D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007232 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
7233 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007234 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007235 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007236 return NULL;
7237 }
7238 goto done;
7239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007240 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007241 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7242 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007243 }
7244 { // lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007245 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007246 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007247 return NULL;
7248 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007249 D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007250 StarEtc* a;
7251 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007252 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007253 )
7254 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007255 D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007256 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
7257 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007258 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007259 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007260 return NULL;
7261 }
7262 goto done;
7263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007264 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007265 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7266 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007268 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007269 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007270 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007271 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007272}
7273
Guido van Rossum3941d972020-05-01 09:42:03 -07007274// lambda_slash_no_default:
7275// | lambda_param_no_default+ '/' ','
7276// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007277static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07007278lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007279{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007280 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007281 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007282 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007283 return NULL;
7284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007285 asdl_seq* _res = NULL;
7286 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007287 { // lambda_param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007288 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007289 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007290 return NULL;
7291 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007292 D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007293 Token * _literal;
7294 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07007295 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007296 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007297 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007298 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007299 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007300 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007301 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007302 )
7303 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007304 D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007305 _res = a;
7306 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007307 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007308 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007309 return NULL;
7310 }
7311 goto done;
7312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007313 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007314 D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
7315 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007316 }
7317 { // lambda_param_no_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007318 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007319 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007320 return NULL;
7321 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007322 D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007323 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007324 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007325 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007326 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07007327 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007328 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07007329 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007330 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007331 )
7332 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007333 D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007334 _res = a;
7335 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007336 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007337 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007338 return NULL;
7339 }
7340 goto done;
7341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007342 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007343 D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
7344 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007346 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007347 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007348 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007349 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007350}
7351
Guido van Rossum3941d972020-05-01 09:42:03 -07007352// lambda_slash_with_default:
7353// | lambda_param_no_default* lambda_param_with_default+ '/' ','
7354// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007355static SlashWithDefault*
7356lambda_slash_with_default_rule(Parser *p)
7357{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007358 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007359 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007360 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007361 return NULL;
7362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007363 SlashWithDefault* _res = NULL;
7364 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007365 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007366 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007367 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007368 return NULL;
7369 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007370 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+ '/' ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007371 Token * _literal;
7372 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07007373 asdl_seq * a;
7374 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007375 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007376 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007378 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007379 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007380 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007381 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007382 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007383 )
7384 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007385 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+ '/' ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007386 _res = _PyPegen_slash_with_default ( p , a , b );
7387 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007388 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007389 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007390 return NULL;
7391 }
7392 goto done;
7393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007394 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007395 D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
7396 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007397 }
7398 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007399 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007400 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007401 return NULL;
7402 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007403 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+ '/' &':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007404 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007405 asdl_seq * a;
7406 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07007407 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007408 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07007409 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007410 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07007411 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007412 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07007413 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007414 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007415 )
7416 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007417 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+ '/' &':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007418 _res = _PyPegen_slash_with_default ( p , a , b );
7419 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007420 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007421 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007422 return NULL;
7423 }
7424 goto done;
7425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007426 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007427 D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
7428 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007430 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007431 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007432 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007433 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007434}
7435
7436// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07007437// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
7438// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
7439// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007440// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007441static StarEtc*
7442lambda_star_etc_rule(Parser *p)
7443{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007444 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007445 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007446 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007447 return NULL;
7448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007449 StarEtc* _res = NULL;
7450 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007451 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007452 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007453 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007454 return NULL;
7455 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007456 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007457 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007458 arg_ty a;
7459 asdl_seq * b;
7460 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007461 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007462 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007463 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007464 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007465 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007466 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007467 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007468 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007469 )
7470 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007471 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?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007472 _res = _PyPegen_star_etc ( p , a , b , c );
7473 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007474 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007475 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007476 return NULL;
7477 }
7478 goto done;
7479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007480 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007481 D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
7482 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007483 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007484 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007485 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007486 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007487 return NULL;
7488 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007489 D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007490 Token * _literal;
7491 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007492 asdl_seq * b;
7493 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007494 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007495 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007496 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007497 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007498 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007499 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007501 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007502 )
7503 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007504 D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007505 _res = _PyPegen_star_etc ( p , NULL , b , c );
7506 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007507 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007508 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007509 return NULL;
7510 }
7511 goto done;
7512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007513 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007514 D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
7515 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007516 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007517 { // lambda_kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007518 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007519 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007520 return NULL;
7521 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007522 D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007523 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007524 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007525 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007526 )
7527 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007528 D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007529 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
7530 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007531 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007532 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007533 return NULL;
7534 }
7535 goto done;
7536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007537 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007538 D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
7539 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007540 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007541 { // invalid_lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007542 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007543 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007544 return NULL;
7545 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007546 D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007547 void *invalid_lambda_star_etc_var;
7548 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007549 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007550 )
7551 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007552 D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007553 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007554 goto done;
7555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007556 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007557 D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
7558 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007560 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007561 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007562 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007563 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007564}
7565
Guido van Rossum3941d972020-05-01 09:42:03 -07007566// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007567static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07007568lambda_kwds_rule(Parser *p)
7569{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007570 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -07007571 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007572 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007573 return NULL;
7574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007575 arg_ty _res = NULL;
7576 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007577 { // '**' lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007578 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007579 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007580 return NULL;
7581 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007582 D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007583 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007584 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007585 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007586 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07007587 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007588 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07007589 )
7590 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007591 D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007592 _res = a;
7593 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007594 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007595 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007596 return NULL;
7597 }
7598 goto done;
7599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007600 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007601 D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
7602 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007604 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07007605 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007606 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007607 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07007608}
7609
7610// lambda_param_no_default: lambda_param ',' | lambda_param &':'
7611static arg_ty
7612lambda_param_no_default_rule(Parser *p)
7613{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007614 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -07007615 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007616 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007617 return NULL;
7618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007619 arg_ty _res = NULL;
7620 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007621 { // lambda_param ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007622 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007623 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007624 return NULL;
7625 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007626 D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007627 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007628 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007630 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007631 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007632 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007633 )
7634 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007635 D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007636 _res = a;
7637 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007638 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007639 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007640 return NULL;
7641 }
7642 goto done;
7643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007644 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007645 D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
7646 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007647 }
7648 { // lambda_param &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007649 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007650 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007651 return NULL;
7652 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007653 D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007654 arg_ty a;
7655 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007656 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007657 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007658 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07007659 )
7660 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007661 D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007662 _res = a;
7663 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007664 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007665 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007666 return NULL;
7667 }
7668 goto done;
7669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007670 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007671 D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
7672 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007674 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07007675 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007676 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007677 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07007678}
7679
7680// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
7681static NameDefaultPair*
7682lambda_param_with_default_rule(Parser *p)
7683{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007684 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -07007685 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007686 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007687 return NULL;
7688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007689 NameDefaultPair* _res = NULL;
7690 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007691 { // lambda_param default ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007692 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007693 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007694 return NULL;
7695 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007696 D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007697 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007698 arg_ty a;
7699 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07007700 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007701 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007702 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007703 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07007704 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007705 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007706 )
7707 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007708 D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007709 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
7710 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007711 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007712 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007713 return NULL;
7714 }
7715 goto done;
7716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007717 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007718 D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
7719 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007720 }
7721 { // lambda_param default &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007722 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007723 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007724 return NULL;
7725 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007726 D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007727 arg_ty a;
7728 expr_ty c;
7729 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007730 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007731 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007732 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07007733 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007734 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07007735 )
7736 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007737 D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007738 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
7739 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007740 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007741 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007742 return NULL;
7743 }
7744 goto done;
7745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007746 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007747 D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
7748 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007750 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07007751 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007752 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007753 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07007754}
7755
7756// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
7757static NameDefaultPair*
7758lambda_param_maybe_default_rule(Parser *p)
7759{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007760 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -07007761 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007762 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007763 return NULL;
7764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007765 NameDefaultPair* _res = NULL;
7766 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007767 { // lambda_param default? ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007768 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007769 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007770 return NULL;
7771 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007772 D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007773 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007774 arg_ty a;
7775 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07007776 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007777 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007778 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007779 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07007780 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007781 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007782 )
7783 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007784 D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007785 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
7786 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007787 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007788 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007789 return NULL;
7790 }
7791 goto done;
7792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007793 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007794 D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
7795 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007796 }
7797 { // lambda_param default? &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007798 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007799 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007800 return NULL;
7801 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007802 D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007803 arg_ty a;
7804 void *c;
7805 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007806 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007807 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007808 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07007809 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007810 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07007811 )
7812 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007813 D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007814 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
7815 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007816 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007817 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007818 return NULL;
7819 }
7820 goto done;
7821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007822 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007823 D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
7824 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007826 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07007827 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007828 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007829 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07007830}
7831
7832// lambda_param: NAME
7833static arg_ty
7834lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007835{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007836 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007837 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007838 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007839 return NULL;
7840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007841 arg_ty _res = NULL;
7842 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007843 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7844 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007845 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007846 return NULL;
7847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007848 int _start_lineno = p->tokens[_mark]->lineno;
7849 UNUSED(_start_lineno); // Only used by EXTRA macro
7850 int _start_col_offset = p->tokens[_mark]->col_offset;
7851 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007852 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007853 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007854 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007855 return NULL;
7856 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007857 D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007858 expr_ty a;
7859 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007860 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007861 )
7862 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007863 D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007864 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7865 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007866 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007867 return NULL;
7868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007869 int _end_lineno = _token->end_lineno;
7870 UNUSED(_end_lineno); // Only used by EXTRA macro
7871 int _end_col_offset = _token->end_col_offset;
7872 UNUSED(_end_col_offset); // Only used by EXTRA macro
7873 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
7874 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007875 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007876 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007877 return NULL;
7878 }
7879 goto done;
7880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007881 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007882 D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
7883 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007885 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007886 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007887 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007888 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007889}
7890
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007891// disjunction: conjunction (('or' conjunction))+ | conjunction
7892static expr_ty
7893disjunction_rule(Parser *p)
7894{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007895 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007896 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007897 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007898 return NULL;
7899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007900 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007901 if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
7902 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007903 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007905 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007906 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7907 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007908 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007909 return NULL;
7910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007911 int _start_lineno = p->tokens[_mark]->lineno;
7912 UNUSED(_start_lineno); // Only used by EXTRA macro
7913 int _start_col_offset = p->tokens[_mark]->col_offset;
7914 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007915 { // conjunction (('or' conjunction))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007916 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007917 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007918 return NULL;
7919 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007920 D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007921 expr_ty a;
7922 asdl_seq * b;
7923 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007924 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007925 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007926 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007927 )
7928 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007929 D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007930 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7931 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007932 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007933 return NULL;
7934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007935 int _end_lineno = _token->end_lineno;
7936 UNUSED(_end_lineno); // Only used by EXTRA macro
7937 int _end_col_offset = _token->end_col_offset;
7938 UNUSED(_end_col_offset); // Only used by EXTRA macro
7939 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
7940 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007941 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007942 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007943 return NULL;
7944 }
7945 goto done;
7946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007947 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007948 D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
7949 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007950 }
7951 { // conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007952 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007953 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007954 return NULL;
7955 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007956 D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007957 expr_ty conjunction_var;
7958 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007959 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007960 )
7961 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007962 D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007963 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007964 goto done;
7965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007966 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007967 D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
7968 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007970 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007971 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007972 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01007973 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007974 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007975}
7976
7977// conjunction: inversion (('and' inversion))+ | inversion
7978static expr_ty
7979conjunction_rule(Parser *p)
7980{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007981 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007982 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007983 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007984 return NULL;
7985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007986 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007987 if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
7988 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007989 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007991 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007992 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7993 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007994 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007995 return NULL;
7996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007997 int _start_lineno = p->tokens[_mark]->lineno;
7998 UNUSED(_start_lineno); // Only used by EXTRA macro
7999 int _start_col_offset = p->tokens[_mark]->col_offset;
8000 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008001 { // inversion (('and' inversion))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008002 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008003 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008004 return NULL;
8005 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008006 D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008007 expr_ty a;
8008 asdl_seq * b;
8009 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008010 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008012 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008013 )
8014 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008015 D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008016 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8017 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008018 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008019 return NULL;
8020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008021 int _end_lineno = _token->end_lineno;
8022 UNUSED(_end_lineno); // Only used by EXTRA macro
8023 int _end_col_offset = _token->end_col_offset;
8024 UNUSED(_end_col_offset); // Only used by EXTRA macro
8025 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
8026 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008027 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008028 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008029 return NULL;
8030 }
8031 goto done;
8032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008033 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008034 D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
8035 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008036 }
8037 { // inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008038 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008039 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008040 return NULL;
8041 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008042 D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008043 expr_ty inversion_var;
8044 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008045 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008046 )
8047 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008048 D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008049 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008050 goto done;
8051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008052 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008053 D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
8054 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008056 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008057 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008058 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01008059 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008060 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008061}
8062
8063// inversion: 'not' inversion | comparison
8064static expr_ty
8065inversion_rule(Parser *p)
8066{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008067 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008068 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008069 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008070 return NULL;
8071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008072 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008073 if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
8074 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008075 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008077 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008078 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8079 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008080 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008081 return NULL;
8082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008083 int _start_lineno = p->tokens[_mark]->lineno;
8084 UNUSED(_start_lineno); // Only used by EXTRA macro
8085 int _start_col_offset = p->tokens[_mark]->col_offset;
8086 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008087 { // 'not' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008088 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008089 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008090 return NULL;
8091 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008092 D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008093 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008094 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008095 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008096 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008097 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008098 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008099 )
8100 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008101 D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008102 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8103 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008104 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008105 return NULL;
8106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008107 int _end_lineno = _token->end_lineno;
8108 UNUSED(_end_lineno); // Only used by EXTRA macro
8109 int _end_col_offset = _token->end_col_offset;
8110 UNUSED(_end_col_offset); // Only used by EXTRA macro
8111 _res = _Py_UnaryOp ( Not , a , EXTRA );
8112 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008113 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008114 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008115 return NULL;
8116 }
8117 goto done;
8118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008119 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008120 D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
8121 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008122 }
8123 { // comparison
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008124 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008125 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008126 return NULL;
8127 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008128 D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008129 expr_ty comparison_var;
8130 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008131 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008132 )
8133 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008134 D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008135 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008136 goto done;
8137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008138 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008139 D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
8140 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008142 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008143 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008144 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01008145 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008146 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008147}
8148
8149// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
8150static expr_ty
8151comparison_rule(Parser *p)
8152{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008153 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008154 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008155 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008156 return NULL;
8157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008158 expr_ty _res = NULL;
8159 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008160 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8161 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008162 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008163 return NULL;
8164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008165 int _start_lineno = p->tokens[_mark]->lineno;
8166 UNUSED(_start_lineno); // Only used by EXTRA macro
8167 int _start_col_offset = p->tokens[_mark]->col_offset;
8168 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008169 { // bitwise_or compare_op_bitwise_or_pair+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008170 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008171 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008172 return NULL;
8173 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008174 D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008175 expr_ty a;
8176 asdl_seq * b;
8177 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008178 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008179 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008180 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008181 )
8182 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008183 D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008184 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8185 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008186 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008187 return NULL;
8188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008189 int _end_lineno = _token->end_lineno;
8190 UNUSED(_end_lineno); // Only used by EXTRA macro
8191 int _end_col_offset = _token->end_col_offset;
8192 UNUSED(_end_col_offset); // Only used by EXTRA macro
8193 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
8194 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008195 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008196 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008197 return NULL;
8198 }
8199 goto done;
8200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008201 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008202 D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
8203 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008204 }
8205 { // bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008206 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008207 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008208 return NULL;
8209 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008210 D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008211 expr_ty bitwise_or_var;
8212 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008213 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008214 )
8215 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008216 D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008217 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008218 goto done;
8219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008220 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008221 D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
8222 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008224 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008225 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008226 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008227 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008228}
8229
8230// compare_op_bitwise_or_pair:
8231// | eq_bitwise_or
8232// | noteq_bitwise_or
8233// | lte_bitwise_or
8234// | lt_bitwise_or
8235// | gte_bitwise_or
8236// | gt_bitwise_or
8237// | notin_bitwise_or
8238// | in_bitwise_or
8239// | isnot_bitwise_or
8240// | is_bitwise_or
8241static CmpopExprPair*
8242compare_op_bitwise_or_pair_rule(Parser *p)
8243{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008244 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008245 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008246 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008247 return NULL;
8248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008249 CmpopExprPair* _res = NULL;
8250 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008251 { // eq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008252 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008253 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008254 return NULL;
8255 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008256 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008257 CmpopExprPair* eq_bitwise_or_var;
8258 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008259 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008260 )
8261 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008262 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008263 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008264 goto done;
8265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008266 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008267 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8268 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008269 }
8270 { // noteq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008271 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008272 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008273 return NULL;
8274 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008275 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008276 CmpopExprPair* noteq_bitwise_or_var;
8277 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008278 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008279 )
8280 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008281 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008282 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008283 goto done;
8284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008285 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008286 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8287 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008288 }
8289 { // lte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008290 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008291 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008292 return NULL;
8293 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008294 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008295 CmpopExprPair* lte_bitwise_or_var;
8296 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008297 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008298 )
8299 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008300 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008301 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008302 goto done;
8303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008304 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008305 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8306 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008307 }
8308 { // lt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008309 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008310 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008311 return NULL;
8312 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008313 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008314 CmpopExprPair* lt_bitwise_or_var;
8315 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008316 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008317 )
8318 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008319 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008320 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008321 goto done;
8322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008323 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008324 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8325 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008326 }
8327 { // gte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008328 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008329 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008330 return NULL;
8331 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008332 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008333 CmpopExprPair* gte_bitwise_or_var;
8334 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008335 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008336 )
8337 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008338 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008339 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008340 goto done;
8341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008342 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008343 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8344 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008345 }
8346 { // gt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008347 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008348 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008349 return NULL;
8350 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008351 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008352 CmpopExprPair* gt_bitwise_or_var;
8353 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008354 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008355 )
8356 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008357 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008358 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008359 goto done;
8360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008361 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008362 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8363 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008364 }
8365 { // notin_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008366 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008367 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008368 return NULL;
8369 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008370 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008371 CmpopExprPair* notin_bitwise_or_var;
8372 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008373 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008374 )
8375 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008376 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008377 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008378 goto done;
8379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008380 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008381 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8382 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008383 }
8384 { // in_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008385 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008386 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008387 return NULL;
8388 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008389 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008390 CmpopExprPair* in_bitwise_or_var;
8391 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008392 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008393 )
8394 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008395 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008396 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008397 goto done;
8398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008399 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008400 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8401 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008402 }
8403 { // isnot_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008404 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008405 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008406 return NULL;
8407 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008408 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008409 CmpopExprPair* isnot_bitwise_or_var;
8410 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008411 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008412 )
8413 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008414 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008415 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008416 goto done;
8417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008418 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008419 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8420 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008421 }
8422 { // is_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008423 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008424 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008425 return NULL;
8426 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008427 D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008428 CmpopExprPair* is_bitwise_or_var;
8429 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008430 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008431 )
8432 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008433 D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008434 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008435 goto done;
8436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008437 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008438 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8439 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008441 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008442 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008443 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008444 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008445}
8446
8447// eq_bitwise_or: '==' bitwise_or
8448static CmpopExprPair*
8449eq_bitwise_or_rule(Parser *p)
8450{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008451 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008452 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008453 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008454 return NULL;
8455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008456 CmpopExprPair* _res = NULL;
8457 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008458 { // '==' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008459 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008460 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008461 return NULL;
8462 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008463 D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008464 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008465 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008467 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008468 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008469 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008470 )
8471 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008472 D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008473 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
8474 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008475 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008476 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008477 return NULL;
8478 }
8479 goto done;
8480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008481 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008482 D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8483 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008485 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008486 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008487 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008488 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008489}
8490
Pablo Galindo2b74c832020-04-27 18:02:07 +01008491// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008492static CmpopExprPair*
8493noteq_bitwise_or_rule(Parser *p)
8494{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008495 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008496 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008497 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008498 return NULL;
8499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008500 CmpopExprPair* _res = NULL;
8501 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008502 { // ('!=') bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008503 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008504 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008505 return NULL;
8506 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008507 D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
Guido van Rossum3941d972020-05-01 09:42:03 -07008508 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008509 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008510 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008511 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008512 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008513 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008514 )
8515 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008516 D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008517 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
8518 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008519 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008520 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008521 return NULL;
8522 }
8523 goto done;
8524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008525 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008526 D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8527 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008529 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008530 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008531 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008532 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008533}
8534
8535// lte_bitwise_or: '<=' bitwise_or
8536static CmpopExprPair*
8537lte_bitwise_or_rule(Parser *p)
8538{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008539 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008540 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008541 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008542 return NULL;
8543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008544 CmpopExprPair* _res = NULL;
8545 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008546 { // '<=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008547 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008548 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008549 return NULL;
8550 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008551 D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008552 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008553 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008554 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008555 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008556 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008557 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008558 )
8559 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008560 D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008561 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
8562 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008563 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008564 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008565 return NULL;
8566 }
8567 goto done;
8568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008569 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008570 D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8571 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008573 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008574 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008575 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008576 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008577}
8578
8579// lt_bitwise_or: '<' bitwise_or
8580static CmpopExprPair*
8581lt_bitwise_or_rule(Parser *p)
8582{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008583 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008584 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008585 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008586 return NULL;
8587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008588 CmpopExprPair* _res = NULL;
8589 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 { // '<' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008591 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008592 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008593 return NULL;
8594 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008595 D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008596 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008597 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008598 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008599 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008600 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008601 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008602 )
8603 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008604 D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008605 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
8606 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008607 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008608 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008609 return NULL;
8610 }
8611 goto done;
8612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008613 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008614 D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8615 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008617 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008618 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008619 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008620 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008621}
8622
8623// gte_bitwise_or: '>=' bitwise_or
8624static CmpopExprPair*
8625gte_bitwise_or_rule(Parser *p)
8626{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008627 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008628 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008629 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008630 return NULL;
8631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008632 CmpopExprPair* _res = NULL;
8633 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008634 { // '>=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008635 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008636 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008637 return NULL;
8638 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008639 D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008640 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008641 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008642 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008643 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008644 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008645 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008646 )
8647 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008648 D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008649 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
8650 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008651 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008652 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008653 return NULL;
8654 }
8655 goto done;
8656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008657 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008658 D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8659 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008661 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008662 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008663 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008664 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008665}
8666
8667// gt_bitwise_or: '>' bitwise_or
8668static CmpopExprPair*
8669gt_bitwise_or_rule(Parser *p)
8670{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008671 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008672 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008673 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008674 return NULL;
8675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008676 CmpopExprPair* _res = NULL;
8677 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008678 { // '>' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008679 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008680 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008681 return NULL;
8682 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008683 D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008684 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008685 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008686 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008687 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008688 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008689 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008690 )
8691 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008692 D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008693 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
8694 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008695 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008696 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008697 return NULL;
8698 }
8699 goto done;
8700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008701 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008702 D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8703 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008705 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008706 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008707 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008708 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008709}
8710
8711// notin_bitwise_or: 'not' 'in' bitwise_or
8712static CmpopExprPair*
8713notin_bitwise_or_rule(Parser *p)
8714{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008715 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008716 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008717 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008718 return NULL;
8719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008720 CmpopExprPair* _res = NULL;
8721 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008722 { // 'not' 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008723 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008724 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008725 return NULL;
8726 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008727 D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008728 Token * _keyword;
8729 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008730 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008731 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008732 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008733 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008734 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008735 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008736 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008737 )
8738 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008739 D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008740 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
8741 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008742 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008743 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008744 return NULL;
8745 }
8746 goto done;
8747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008748 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008749 D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8750 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008752 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008753 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008754 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008755 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008756}
8757
8758// in_bitwise_or: 'in' bitwise_or
8759static CmpopExprPair*
8760in_bitwise_or_rule(Parser *p)
8761{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008762 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008763 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008764 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008765 return NULL;
8766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008767 CmpopExprPair* _res = NULL;
8768 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008769 { // 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008770 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008771 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008772 return NULL;
8773 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008774 D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008775 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008776 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008777 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008778 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008779 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008780 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008781 )
8782 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008783 D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008784 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
8785 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008786 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008787 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008788 return NULL;
8789 }
8790 goto done;
8791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008792 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008793 D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8794 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008796 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008797 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008798 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008799 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008800}
8801
8802// isnot_bitwise_or: 'is' 'not' bitwise_or
8803static CmpopExprPair*
8804isnot_bitwise_or_rule(Parser *p)
8805{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008806 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008807 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008808 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008809 return NULL;
8810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008811 CmpopExprPair* _res = NULL;
8812 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008813 { // 'is' 'not' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008814 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008815 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008816 return NULL;
8817 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008818 D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008819 Token * _keyword;
8820 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008821 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008822 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008823 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008824 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008825 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008826 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008827 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008828 )
8829 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008830 D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008831 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
8832 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008833 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008834 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008835 return NULL;
8836 }
8837 goto done;
8838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008839 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008840 D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8841 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008843 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008844 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008845 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008846 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008847}
8848
8849// is_bitwise_or: 'is' bitwise_or
8850static CmpopExprPair*
8851is_bitwise_or_rule(Parser *p)
8852{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008853 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008854 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008855 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008856 return NULL;
8857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008858 CmpopExprPair* _res = NULL;
8859 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008860 { // 'is' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008861 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008862 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008863 return NULL;
8864 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008865 D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008866 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008867 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008868 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008869 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008870 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008871 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008872 )
8873 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008874 D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008875 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
8876 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008877 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008878 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008879 return NULL;
8880 }
8881 goto done;
8882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008883 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008884 D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8885 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008887 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008888 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008889 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008890 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008891}
8892
8893// Left-recursive
8894// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
8895static expr_ty bitwise_or_raw(Parser *);
8896static expr_ty
8897bitwise_or_rule(Parser *p)
8898{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008899 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008900 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008901 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
8902 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008903 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008905 int _mark = p->mark;
8906 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008907 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008908 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008909 if (tmpvar_1) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008910 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008911 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008913 p->mark = _mark;
8914 void *_raw = bitwise_or_raw(p);
8915 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008916 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008917 _resmark = p->mark;
8918 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008920 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008921 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008922 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008923}
8924static expr_ty
8925bitwise_or_raw(Parser *p)
8926{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008927 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008928 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008929 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008930 return NULL;
8931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008932 expr_ty _res = NULL;
8933 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008934 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8935 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008936 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008937 return NULL;
8938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008939 int _start_lineno = p->tokens[_mark]->lineno;
8940 UNUSED(_start_lineno); // Only used by EXTRA macro
8941 int _start_col_offset = p->tokens[_mark]->col_offset;
8942 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008943 { // bitwise_or '|' bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008944 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008945 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008946 return NULL;
8947 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008948 D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008949 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008950 expr_ty a;
8951 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008952 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008953 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008954 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008955 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008957 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008958 )
8959 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008960 D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008961 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8962 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008963 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008964 return NULL;
8965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008966 int _end_lineno = _token->end_lineno;
8967 UNUSED(_end_lineno); // Only used by EXTRA macro
8968 int _end_col_offset = _token->end_col_offset;
8969 UNUSED(_end_col_offset); // Only used by EXTRA macro
8970 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
8971 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008972 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008973 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008974 return NULL;
8975 }
8976 goto done;
8977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008978 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008979 D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8980 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008981 }
8982 { // bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008983 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008984 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008985 return NULL;
8986 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008987 D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008988 expr_ty bitwise_xor_var;
8989 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008990 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008991 )
8992 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008993 D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008994 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008995 goto done;
8996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008997 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008998 D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8999 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009001 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009002 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009003 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009004 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009005}
9006
9007// Left-recursive
9008// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
9009static expr_ty bitwise_xor_raw(Parser *);
9010static expr_ty
9011bitwise_xor_rule(Parser *p)
9012{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009013 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009014 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009015 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
9016 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009017 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009019 int _mark = p->mark;
9020 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009021 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009022 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009023 if (tmpvar_2) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009024 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009025 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009027 p->mark = _mark;
9028 void *_raw = bitwise_xor_raw(p);
9029 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009030 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009031 _resmark = p->mark;
9032 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009034 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009035 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009036 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009037}
9038static expr_ty
9039bitwise_xor_raw(Parser *p)
9040{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009041 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009042 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009043 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009044 return NULL;
9045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009046 expr_ty _res = NULL;
9047 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009048 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9049 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009050 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009051 return NULL;
9052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009053 int _start_lineno = p->tokens[_mark]->lineno;
9054 UNUSED(_start_lineno); // Only used by EXTRA macro
9055 int _start_col_offset = p->tokens[_mark]->col_offset;
9056 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009057 { // bitwise_xor '^' bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009058 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009059 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009060 return NULL;
9061 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009062 D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009063 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009064 expr_ty a;
9065 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009066 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009067 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009068 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009069 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009070 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009071 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009072 )
9073 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009074 D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009075 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9076 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009077 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009078 return NULL;
9079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009080 int _end_lineno = _token->end_lineno;
9081 UNUSED(_end_lineno); // Only used by EXTRA macro
9082 int _end_col_offset = _token->end_col_offset;
9083 UNUSED(_end_col_offset); // Only used by EXTRA macro
9084 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
9085 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009086 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009087 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009088 return NULL;
9089 }
9090 goto done;
9091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009092 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009093 D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
9094 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009095 }
9096 { // bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009097 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009098 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009099 return NULL;
9100 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009101 D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009102 expr_ty bitwise_and_var;
9103 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009104 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009105 )
9106 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009107 D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009108 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009109 goto done;
9110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009111 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009112 D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
9113 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009115 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009116 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009117 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009118 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009119}
9120
9121// Left-recursive
9122// bitwise_and: bitwise_and '&' shift_expr | shift_expr
9123static expr_ty bitwise_and_raw(Parser *);
9124static expr_ty
9125bitwise_and_rule(Parser *p)
9126{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009127 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009128 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009129 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
9130 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009131 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009133 int _mark = p->mark;
9134 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009135 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009136 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009137 if (tmpvar_3) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009138 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009139 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009141 p->mark = _mark;
9142 void *_raw = bitwise_and_raw(p);
9143 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009144 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009145 _resmark = p->mark;
9146 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009148 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009149 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009150 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009151}
9152static expr_ty
9153bitwise_and_raw(Parser *p)
9154{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009155 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009156 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009157 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009158 return NULL;
9159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009160 expr_ty _res = NULL;
9161 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009162 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9163 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009164 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009165 return NULL;
9166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009167 int _start_lineno = p->tokens[_mark]->lineno;
9168 UNUSED(_start_lineno); // Only used by EXTRA macro
9169 int _start_col_offset = p->tokens[_mark]->col_offset;
9170 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009171 { // bitwise_and '&' shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009172 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009173 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009174 return NULL;
9175 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009176 D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009177 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009178 expr_ty a;
9179 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009180 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009181 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009182 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009183 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009184 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009185 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009186 )
9187 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009188 D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009189 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9190 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009191 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192 return NULL;
9193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009194 int _end_lineno = _token->end_lineno;
9195 UNUSED(_end_lineno); // Only used by EXTRA macro
9196 int _end_col_offset = _token->end_col_offset;
9197 UNUSED(_end_col_offset); // Only used by EXTRA macro
9198 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
9199 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009200 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009201 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009202 return NULL;
9203 }
9204 goto done;
9205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009206 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009207 D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
9208 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009209 }
9210 { // shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009211 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009212 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009213 return NULL;
9214 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009215 D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009216 expr_ty shift_expr_var;
9217 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009218 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009219 )
9220 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009221 D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009222 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009223 goto done;
9224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009225 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009226 D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
9227 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009229 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009230 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009231 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009232 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009233}
9234
9235// Left-recursive
9236// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
9237static expr_ty shift_expr_raw(Parser *);
9238static expr_ty
9239shift_expr_rule(Parser *p)
9240{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009241 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009242 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009243 if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
9244 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009245 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009247 int _mark = p->mark;
9248 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009249 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009250 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009251 if (tmpvar_4) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009252 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009253 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009255 p->mark = _mark;
9256 void *_raw = shift_expr_raw(p);
9257 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009258 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009259 _resmark = p->mark;
9260 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009262 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009263 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009264 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009265}
9266static expr_ty
9267shift_expr_raw(Parser *p)
9268{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009269 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009270 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009271 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009272 return NULL;
9273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009274 expr_ty _res = NULL;
9275 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009276 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9277 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009278 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009279 return NULL;
9280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009281 int _start_lineno = p->tokens[_mark]->lineno;
9282 UNUSED(_start_lineno); // Only used by EXTRA macro
9283 int _start_col_offset = p->tokens[_mark]->col_offset;
9284 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009285 { // shift_expr '<<' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009286 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009287 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009288 return NULL;
9289 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009290 D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009291 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009292 expr_ty a;
9293 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009294 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009295 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009296 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009297 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009298 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009299 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009300 )
9301 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009302 D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009303 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9304 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009305 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009306 return NULL;
9307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009308 int _end_lineno = _token->end_lineno;
9309 UNUSED(_end_lineno); // Only used by EXTRA macro
9310 int _end_col_offset = _token->end_col_offset;
9311 UNUSED(_end_col_offset); // Only used by EXTRA macro
9312 _res = _Py_BinOp ( a , LShift , b , EXTRA );
9313 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009314 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009315 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009316 return NULL;
9317 }
9318 goto done;
9319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009320 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009321 D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
9322 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009323 }
9324 { // shift_expr '>>' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009325 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009326 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009327 return NULL;
9328 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009329 D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009330 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009331 expr_ty a;
9332 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009333 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009334 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009335 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009336 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009337 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009338 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009339 )
9340 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009341 D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009342 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9343 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009344 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009345 return NULL;
9346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009347 int _end_lineno = _token->end_lineno;
9348 UNUSED(_end_lineno); // Only used by EXTRA macro
9349 int _end_col_offset = _token->end_col_offset;
9350 UNUSED(_end_col_offset); // Only used by EXTRA macro
9351 _res = _Py_BinOp ( a , RShift , b , EXTRA );
9352 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009353 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009354 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009355 return NULL;
9356 }
9357 goto done;
9358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009359 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009360 D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
9361 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009362 }
9363 { // sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009364 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009365 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009366 return NULL;
9367 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009368 D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009369 expr_ty sum_var;
9370 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009371 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 )
9373 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009374 D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009375 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009376 goto done;
9377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009378 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009379 D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
9380 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009382 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009383 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009384 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009385 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009386}
9387
9388// Left-recursive
9389// sum: sum '+' term | sum '-' term | term
9390static expr_ty sum_raw(Parser *);
9391static expr_ty
9392sum_rule(Parser *p)
9393{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009394 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009395 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009396 if (_PyPegen_is_memoized(p, sum_type, &_res)) {
9397 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009398 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009400 int _mark = p->mark;
9401 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009402 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009403 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009404 if (tmpvar_5) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009405 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009406 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009408 p->mark = _mark;
9409 void *_raw = sum_raw(p);
9410 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009411 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009412 _resmark = p->mark;
9413 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009415 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009416 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009417 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009418}
9419static expr_ty
9420sum_raw(Parser *p)
9421{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009422 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009423 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009424 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009425 return NULL;
9426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009427 expr_ty _res = NULL;
9428 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009429 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9430 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009431 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009432 return NULL;
9433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009434 int _start_lineno = p->tokens[_mark]->lineno;
9435 UNUSED(_start_lineno); // Only used by EXTRA macro
9436 int _start_col_offset = p->tokens[_mark]->col_offset;
9437 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009438 { // sum '+' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009439 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009440 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009441 return NULL;
9442 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009443 D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009444 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009445 expr_ty a;
9446 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009447 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009448 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009449 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009450 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009452 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009453 )
9454 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009455 D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009456 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9457 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009458 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009459 return NULL;
9460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009461 int _end_lineno = _token->end_lineno;
9462 UNUSED(_end_lineno); // Only used by EXTRA macro
9463 int _end_col_offset = _token->end_col_offset;
9464 UNUSED(_end_col_offset); // Only used by EXTRA macro
9465 _res = _Py_BinOp ( a , Add , b , EXTRA );
9466 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009467 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009468 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009469 return NULL;
9470 }
9471 goto done;
9472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009473 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009474 D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
9475 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009476 }
9477 { // sum '-' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009478 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009479 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009480 return NULL;
9481 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009482 D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009483 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009484 expr_ty a;
9485 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009486 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009487 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009488 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009489 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009490 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009491 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009492 )
9493 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009494 D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009495 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9496 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009497 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009498 return NULL;
9499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009500 int _end_lineno = _token->end_lineno;
9501 UNUSED(_end_lineno); // Only used by EXTRA macro
9502 int _end_col_offset = _token->end_col_offset;
9503 UNUSED(_end_col_offset); // Only used by EXTRA macro
9504 _res = _Py_BinOp ( a , Sub , b , EXTRA );
9505 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009506 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009507 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009508 return NULL;
9509 }
9510 goto done;
9511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009512 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009513 D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
9514 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009515 }
9516 { // term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009517 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009518 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009519 return NULL;
9520 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009521 D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009522 expr_ty term_var;
9523 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009524 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009525 )
9526 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009527 D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009528 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009529 goto done;
9530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009531 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009532 D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
9533 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009535 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009536 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009537 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009538 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009539}
9540
9541// Left-recursive
9542// term:
9543// | term '*' factor
9544// | term '/' factor
9545// | term '//' factor
9546// | term '%' factor
9547// | term '@' factor
9548// | factor
9549static expr_ty term_raw(Parser *);
9550static expr_ty
9551term_rule(Parser *p)
9552{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009553 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009554 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009555 if (_PyPegen_is_memoized(p, term_type, &_res)) {
9556 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009557 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009559 int _mark = p->mark;
9560 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009561 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009562 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009563 if (tmpvar_6) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009564 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009565 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009567 p->mark = _mark;
9568 void *_raw = term_raw(p);
9569 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009570 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009571 _resmark = p->mark;
9572 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009574 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009575 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009576 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009577}
9578static expr_ty
9579term_raw(Parser *p)
9580{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009581 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009582 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009583 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009584 return NULL;
9585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009586 expr_ty _res = NULL;
9587 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009588 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9589 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009590 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009591 return NULL;
9592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009593 int _start_lineno = p->tokens[_mark]->lineno;
9594 UNUSED(_start_lineno); // Only used by EXTRA macro
9595 int _start_col_offset = p->tokens[_mark]->col_offset;
9596 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009597 { // term '*' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009598 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009599 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009600 return NULL;
9601 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009602 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009603 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009604 expr_ty a;
9605 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009606 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009607 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009608 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009609 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009610 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009611 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009612 )
9613 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009614 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009615 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9616 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009617 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009618 return NULL;
9619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009620 int _end_lineno = _token->end_lineno;
9621 UNUSED(_end_lineno); // Only used by EXTRA macro
9622 int _end_col_offset = _token->end_col_offset;
9623 UNUSED(_end_col_offset); // Only used by EXTRA macro
9624 _res = _Py_BinOp ( a , Mult , b , EXTRA );
9625 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009626 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009627 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009628 return NULL;
9629 }
9630 goto done;
9631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009632 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009633 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9634 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009635 }
9636 { // term '/' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009637 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009638 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009639 return NULL;
9640 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009641 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009642 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009643 expr_ty a;
9644 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009645 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009646 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009647 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009648 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009649 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009650 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009651 )
9652 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009653 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009654 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9655 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009656 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009657 return NULL;
9658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009659 int _end_lineno = _token->end_lineno;
9660 UNUSED(_end_lineno); // Only used by EXTRA macro
9661 int _end_col_offset = _token->end_col_offset;
9662 UNUSED(_end_col_offset); // Only used by EXTRA macro
9663 _res = _Py_BinOp ( a , Div , b , EXTRA );
9664 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009665 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009666 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009667 return NULL;
9668 }
9669 goto done;
9670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009671 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009672 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9673 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009674 }
9675 { // term '//' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009676 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009677 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009678 return NULL;
9679 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009680 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009681 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009682 expr_ty a;
9683 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009684 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009685 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009686 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009687 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009688 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009689 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009690 )
9691 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009692 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009693 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9694 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009695 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009696 return NULL;
9697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009698 int _end_lineno = _token->end_lineno;
9699 UNUSED(_end_lineno); // Only used by EXTRA macro
9700 int _end_col_offset = _token->end_col_offset;
9701 UNUSED(_end_col_offset); // Only used by EXTRA macro
9702 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
9703 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009704 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009705 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009706 return NULL;
9707 }
9708 goto done;
9709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009710 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009711 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9712 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009713 }
9714 { // term '%' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009715 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009716 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009717 return NULL;
9718 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009719 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009720 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009721 expr_ty a;
9722 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009724 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009725 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009726 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009727 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009728 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009729 )
9730 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009731 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009732 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9733 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009734 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009735 return NULL;
9736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009737 int _end_lineno = _token->end_lineno;
9738 UNUSED(_end_lineno); // Only used by EXTRA macro
9739 int _end_col_offset = _token->end_col_offset;
9740 UNUSED(_end_col_offset); // Only used by EXTRA macro
9741 _res = _Py_BinOp ( a , Mod , b , EXTRA );
9742 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009743 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009744 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009745 return NULL;
9746 }
9747 goto done;
9748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009749 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009750 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9751 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009752 }
9753 { // term '@' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009754 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009755 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009756 return NULL;
9757 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009758 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009759 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009760 expr_ty a;
9761 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009762 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009763 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009764 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009765 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009766 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009767 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009768 )
9769 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009770 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009771 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9772 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009773 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009774 return NULL;
9775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009776 int _end_lineno = _token->end_lineno;
9777 UNUSED(_end_lineno); // Only used by EXTRA macro
9778 int _end_col_offset = _token->end_col_offset;
9779 UNUSED(_end_col_offset); // Only used by EXTRA macro
9780 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
9781 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009782 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009783 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009784 return NULL;
9785 }
9786 goto done;
9787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009788 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009789 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9790 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009791 }
9792 { // factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009793 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009794 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009795 return NULL;
9796 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009797 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009798 expr_ty factor_var;
9799 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009800 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009801 )
9802 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009803 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009804 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009805 goto done;
9806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009807 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009808 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9809 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009811 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009812 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009813 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009814 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009815}
9816
9817// factor: '+' factor | '-' factor | '~' factor | power
9818static expr_ty
9819factor_rule(Parser *p)
9820{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009821 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009822 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009823 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009824 return NULL;
9825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009826 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009827 if (_PyPegen_is_memoized(p, factor_type, &_res)) {
9828 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009829 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009831 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009832 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9833 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009834 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009835 return NULL;
9836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009837 int _start_lineno = p->tokens[_mark]->lineno;
9838 UNUSED(_start_lineno); // Only used by EXTRA macro
9839 int _start_col_offset = p->tokens[_mark]->col_offset;
9840 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009841 { // '+' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009842 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009843 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009844 return NULL;
9845 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009846 D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009847 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009848 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009849 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009850 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009851 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009852 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009853 )
9854 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009855 D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009856 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9857 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009858 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009859 return NULL;
9860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009861 int _end_lineno = _token->end_lineno;
9862 UNUSED(_end_lineno); // Only used by EXTRA macro
9863 int _end_col_offset = _token->end_col_offset;
9864 UNUSED(_end_col_offset); // Only used by EXTRA macro
9865 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
9866 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009867 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009868 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009869 return NULL;
9870 }
9871 goto done;
9872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009873 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009874 D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
9875 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009876 }
9877 { // '-' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009878 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009879 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009880 return NULL;
9881 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009882 D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009883 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009884 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009885 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009886 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009887 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009888 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009889 )
9890 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009891 D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009892 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9893 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009894 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009895 return NULL;
9896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009897 int _end_lineno = _token->end_lineno;
9898 UNUSED(_end_lineno); // Only used by EXTRA macro
9899 int _end_col_offset = _token->end_col_offset;
9900 UNUSED(_end_col_offset); // Only used by EXTRA macro
9901 _res = _Py_UnaryOp ( USub , a , EXTRA );
9902 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009903 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009904 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009905 return NULL;
9906 }
9907 goto done;
9908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009909 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009910 D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
9911 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009912 }
9913 { // '~' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009914 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009915 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009916 return NULL;
9917 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009918 D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009919 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009920 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009921 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009922 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009923 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009924 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009925 )
9926 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009927 D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009928 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9929 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009930 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009931 return NULL;
9932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009933 int _end_lineno = _token->end_lineno;
9934 UNUSED(_end_lineno); // Only used by EXTRA macro
9935 int _end_col_offset = _token->end_col_offset;
9936 UNUSED(_end_col_offset); // Only used by EXTRA macro
9937 _res = _Py_UnaryOp ( Invert , a , EXTRA );
9938 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009939 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009940 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009941 return NULL;
9942 }
9943 goto done;
9944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009945 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009946 D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
9947 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009948 }
9949 { // power
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009950 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009951 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009952 return NULL;
9953 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009954 D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009955 expr_ty power_var;
9956 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009957 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009958 )
9959 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009960 D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009961 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009962 goto done;
9963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009964 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009965 D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
9966 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009968 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009969 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009970 _PyPegen_insert_memo(p, _mark, factor_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01009971 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009972 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009973}
9974
9975// power: await_primary '**' factor | await_primary
9976static expr_ty
9977power_rule(Parser *p)
9978{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009979 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009980 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009981 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009982 return NULL;
9983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009984 expr_ty _res = NULL;
9985 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009986 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9987 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009988 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009989 return NULL;
9990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009991 int _start_lineno = p->tokens[_mark]->lineno;
9992 UNUSED(_start_lineno); // Only used by EXTRA macro
9993 int _start_col_offset = p->tokens[_mark]->col_offset;
9994 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009995 { // await_primary '**' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009996 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009997 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009998 return NULL;
9999 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010000 D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010001 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010002 expr_ty a;
10003 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010004 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010005 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010006 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010007 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010008 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010009 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010010 )
10011 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010012 D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010013 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10014 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010015 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010016 return NULL;
10017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010018 int _end_lineno = _token->end_lineno;
10019 UNUSED(_end_lineno); // Only used by EXTRA macro
10020 int _end_col_offset = _token->end_col_offset;
10021 UNUSED(_end_col_offset); // Only used by EXTRA macro
10022 _res = _Py_BinOp ( a , Pow , b , EXTRA );
10023 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010024 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010025 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010026 return NULL;
10027 }
10028 goto done;
10029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010030 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010031 D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
10032 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010033 }
10034 { // await_primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010035 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010036 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010037 return NULL;
10038 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010039 D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010040 expr_ty await_primary_var;
10041 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010042 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010043 )
10044 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010045 D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010046 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010047 goto done;
10048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010049 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010050 D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
10051 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010053 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010054 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010055 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010056 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010057}
10058
10059// await_primary: AWAIT primary | primary
10060static expr_ty
10061await_primary_rule(Parser *p)
10062{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010063 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010064 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010065 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010066 return NULL;
10067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010068 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010069 if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
10070 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010071 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010073 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010074 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10075 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010076 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010077 return NULL;
10078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010079 int _start_lineno = p->tokens[_mark]->lineno;
10080 UNUSED(_start_lineno); // Only used by EXTRA macro
10081 int _start_col_offset = p->tokens[_mark]->col_offset;
10082 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010083 { // AWAIT primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010084 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010085 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010086 return NULL;
10087 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010088 D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010089 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +010010090 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010091 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010092 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010093 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010094 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010095 )
10096 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010097 D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010098 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10099 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010100 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010101 return NULL;
10102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010103 int _end_lineno = _token->end_lineno;
10104 UNUSED(_end_lineno); // Only used by EXTRA macro
10105 int _end_col_offset = _token->end_col_offset;
10106 UNUSED(_end_col_offset); // Only used by EXTRA macro
10107 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
10108 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010109 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010110 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010111 return NULL;
10112 }
10113 goto done;
10114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010115 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010116 D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
10117 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "AWAIT primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010118 }
10119 { // primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010120 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010121 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010122 return NULL;
10123 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010124 D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010125 expr_ty primary_var;
10126 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010127 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010128 )
10129 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010130 D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010131 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010132 goto done;
10133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010134 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010135 D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
10136 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010138 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010139 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010140 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010010141 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010142 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010143}
10144
10145// Left-recursive
10146// primary:
10147// | primary '.' NAME
10148// | primary genexp
10149// | primary '(' arguments? ')'
10150// | primary '[' slices ']'
10151// | atom
10152static expr_ty primary_raw(Parser *);
10153static expr_ty
10154primary_rule(Parser *p)
10155{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010156 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010157 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010158 if (_PyPegen_is_memoized(p, primary_type, &_res)) {
10159 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010160 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010162 int _mark = p->mark;
10163 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010164 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010165 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010166 if (tmpvar_7) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010167 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010168 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010170 p->mark = _mark;
10171 void *_raw = primary_raw(p);
10172 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010173 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010174 _resmark = p->mark;
10175 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010177 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010178 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010179 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010180}
10181static expr_ty
10182primary_raw(Parser *p)
10183{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010184 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010185 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010186 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010187 return NULL;
10188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010189 expr_ty _res = NULL;
10190 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010191 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10192 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010193 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010194 return NULL;
10195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010196 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
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010200 { // primary '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010201 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010202 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010203 return NULL;
10204 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010205 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010206 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010207 expr_ty a;
10208 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010209 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010210 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010211 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010212 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010213 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010214 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010215 )
10216 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010217 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010218 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10219 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010220 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010221 return NULL;
10222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010223 int _end_lineno = _token->end_lineno;
10224 UNUSED(_end_lineno); // Only used by EXTRA macro
10225 int _end_col_offset = _token->end_col_offset;
10226 UNUSED(_end_col_offset); // Only used by EXTRA macro
10227 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
10228 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010229 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010230 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010231 return NULL;
10232 }
10233 goto done;
10234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010235 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010236 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10237 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010238 }
10239 { // primary genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010240 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010241 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010242 return NULL;
10243 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010244 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010245 expr_ty a;
10246 expr_ty b;
10247 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010248 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010249 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010250 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010251 )
10252 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010253 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010254 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10255 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010256 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010257 return NULL;
10258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010259 int _end_lineno = _token->end_lineno;
10260 UNUSED(_end_lineno); // Only used by EXTRA macro
10261 int _end_col_offset = _token->end_col_offset;
10262 UNUSED(_end_col_offset); // Only used by EXTRA macro
10263 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
10264 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010265 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010266 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010267 return NULL;
10268 }
10269 goto done;
10270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010271 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010272 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10273 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010274 }
10275 { // primary '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010276 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010277 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010278 return NULL;
10279 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010280 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010281 Token * _literal;
10282 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010283 expr_ty a;
10284 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010285 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010286 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010287 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010288 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010289 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010290 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010291 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010292 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010293 )
10294 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010295 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010296 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10297 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010298 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010299 return NULL;
10300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010301 int _end_lineno = _token->end_lineno;
10302 UNUSED(_end_lineno); // Only used by EXTRA macro
10303 int _end_col_offset = _token->end_col_offset;
10304 UNUSED(_end_col_offset); // Only used by EXTRA macro
10305 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
10306 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010307 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010308 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010309 return NULL;
10310 }
10311 goto done;
10312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010313 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010314 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10315 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010316 }
10317 { // primary '[' slices ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010318 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010319 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010320 return NULL;
10321 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010322 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010323 Token * _literal;
10324 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010325 expr_ty a;
10326 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010327 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010328 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010329 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010330 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010331 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010332 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010333 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010334 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010335 )
10336 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010337 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010338 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10339 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010340 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010341 return NULL;
10342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010343 int _end_lineno = _token->end_lineno;
10344 UNUSED(_end_lineno); // Only used by EXTRA macro
10345 int _end_col_offset = _token->end_col_offset;
10346 UNUSED(_end_col_offset); // Only used by EXTRA macro
10347 _res = _Py_Subscript ( a , b , Load , EXTRA );
10348 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010349 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010350 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010351 return NULL;
10352 }
10353 goto done;
10354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010355 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010356 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10357 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010358 }
10359 { // atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010360 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010361 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010362 return NULL;
10363 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010364 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010365 expr_ty atom_var;
10366 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010367 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010368 )
10369 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010370 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010371 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010372 goto done;
10373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010374 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010375 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10376 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010378 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010379 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010380 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010381 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010382}
10383
10384// slices: slice !',' | ','.slice+ ','?
10385static expr_ty
10386slices_rule(Parser *p)
10387{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010388 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010389 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010390 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010391 return NULL;
10392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010393 expr_ty _res = NULL;
10394 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010395 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10396 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010397 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010398 return NULL;
10399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010400 int _start_lineno = p->tokens[_mark]->lineno;
10401 UNUSED(_start_lineno); // Only used by EXTRA macro
10402 int _start_col_offset = p->tokens[_mark]->col_offset;
10403 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010404 { // slice !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010405 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010406 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010407 return NULL;
10408 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010409 D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010410 expr_ty a;
10411 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010412 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010413 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010414 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010415 )
10416 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010417 D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010418 _res = a;
10419 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010420 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010421 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010422 return NULL;
10423 }
10424 goto done;
10425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010426 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010427 D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
10428 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010429 }
10430 { // ','.slice+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010431 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010432 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010433 return NULL;
10434 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010435 D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010436 void *_opt_var;
10437 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010438 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010439 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010440 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010441 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010442 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010443 )
10444 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010445 D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010446 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10447 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010448 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010449 return NULL;
10450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010451 int _end_lineno = _token->end_lineno;
10452 UNUSED(_end_lineno); // Only used by EXTRA macro
10453 int _end_col_offset = _token->end_col_offset;
10454 UNUSED(_end_col_offset); // Only used by EXTRA macro
10455 _res = _Py_Tuple ( a , Load , EXTRA );
10456 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010457 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010458 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010459 return NULL;
10460 }
10461 goto done;
10462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010463 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010464 D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
10465 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.slice+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010467 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010468 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010469 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010470 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010471}
10472
10473// slice: expression? ':' expression? [':' expression?] | expression
10474static expr_ty
10475slice_rule(Parser *p)
10476{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010477 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010478 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010479 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010480 return NULL;
10481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010482 expr_ty _res = NULL;
10483 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010484 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10485 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010486 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010487 return NULL;
10488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010489 int _start_lineno = p->tokens[_mark]->lineno;
10490 UNUSED(_start_lineno); // Only used by EXTRA macro
10491 int _start_col_offset = p->tokens[_mark]->col_offset;
10492 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010493 { // expression? ':' expression? [':' expression?]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010494 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010495 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010496 return NULL;
10497 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010498 D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010499 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010500 void *a;
10501 void *b;
10502 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010503 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010504 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010505 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010506 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010507 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010508 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010509 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010510 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010511 )
10512 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010513 D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010514 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10515 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010516 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010517 return NULL;
10518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010519 int _end_lineno = _token->end_lineno;
10520 UNUSED(_end_lineno); // Only used by EXTRA macro
10521 int _end_col_offset = _token->end_col_offset;
10522 UNUSED(_end_col_offset); // Only used by EXTRA macro
10523 _res = _Py_Slice ( a , b , c , EXTRA );
10524 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010525 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010526 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010527 return NULL;
10528 }
10529 goto done;
10530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010531 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010532 D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
10533 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010534 }
10535 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010536 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010537 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010538 return NULL;
10539 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010540 D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010541 expr_ty a;
10542 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010543 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010544 )
10545 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010546 D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010547 _res = a;
10548 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010549 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010550 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010551 return NULL;
10552 }
10553 goto done;
10554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010555 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010556 D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
10557 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010559 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010560 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010561 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010562 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010563}
10564
10565// atom:
10566// | NAME
10567// | 'True'
10568// | 'False'
10569// | 'None'
10570// | '__new_parser__'
10571// | &STRING strings
10572// | NUMBER
10573// | &'(' (tuple | group | genexp)
10574// | &'[' (list | listcomp)
10575// | &'{' (dict | set | dictcomp | setcomp)
10576// | '...'
10577static expr_ty
10578atom_rule(Parser *p)
10579{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010580 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010581 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010582 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010583 return NULL;
10584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010585 expr_ty _res = NULL;
10586 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010587 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10588 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010589 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010590 return NULL;
10591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010592 int _start_lineno = p->tokens[_mark]->lineno;
10593 UNUSED(_start_lineno); // Only used by EXTRA macro
10594 int _start_col_offset = p->tokens[_mark]->col_offset;
10595 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010596 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010597 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010598 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010599 return NULL;
10600 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010601 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010602 expr_ty name_var;
10603 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010604 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010605 )
10606 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010607 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010608 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010609 goto done;
10610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010611 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010612 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10613 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010614 }
10615 { // 'True'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010616 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010617 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010618 return NULL;
10619 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010620 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010621 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010622 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010623 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010624 )
10625 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010626 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010627 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10628 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010629 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010630 return NULL;
10631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010632 int _end_lineno = _token->end_lineno;
10633 UNUSED(_end_lineno); // Only used by EXTRA macro
10634 int _end_col_offset = _token->end_col_offset;
10635 UNUSED(_end_col_offset); // Only used by EXTRA macro
10636 _res = _Py_Constant ( Py_True , NULL , EXTRA );
10637 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010638 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010639 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010640 return NULL;
10641 }
10642 goto done;
10643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010644 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010645 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10646 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010647 }
10648 { // 'False'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010649 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010650 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010651 return NULL;
10652 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010653 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010654 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010655 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010656 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010657 )
10658 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010659 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010660 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10661 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010662 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010663 return NULL;
10664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010665 int _end_lineno = _token->end_lineno;
10666 UNUSED(_end_lineno); // Only used by EXTRA macro
10667 int _end_col_offset = _token->end_col_offset;
10668 UNUSED(_end_col_offset); // Only used by EXTRA macro
10669 _res = _Py_Constant ( Py_False , NULL , EXTRA );
10670 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010671 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010672 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010673 return NULL;
10674 }
10675 goto done;
10676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010677 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010678 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10679 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010680 }
10681 { // 'None'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010682 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010683 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010684 return NULL;
10685 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010686 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010687 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010688 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010689 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010690 )
10691 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010692 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010693 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10694 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010695 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010696 return NULL;
10697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010698 int _end_lineno = _token->end_lineno;
10699 UNUSED(_end_lineno); // Only used by EXTRA macro
10700 int _end_col_offset = _token->end_col_offset;
10701 UNUSED(_end_col_offset); // Only used by EXTRA macro
10702 _res = _Py_Constant ( Py_None , NULL , EXTRA );
10703 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010704 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010705 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010706 return NULL;
10707 }
10708 goto done;
10709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010710 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010711 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10712 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010713 }
10714 { // '__new_parser__'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010715 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010716 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010717 return NULL;
10718 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010719 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'__new_parser__'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010720 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010721 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010722 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010723 )
10724 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010725 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'__new_parser__'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010726 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
10727 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010728 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010729 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010730 return NULL;
10731 }
10732 goto done;
10733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010734 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010735 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10736 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'__new_parser__'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010737 }
10738 { // &STRING strings
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010739 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010740 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010741 return NULL;
10742 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010743 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010744 expr_ty strings_var;
10745 if (
10746 _PyPegen_lookahead(1, _PyPegen_string_token, p)
10747 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010748 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010749 )
10750 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010751 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010752 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010753 goto done;
10754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010755 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010756 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10757 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&STRING strings"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010758 }
10759 { // NUMBER
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010760 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010761 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010762 return NULL;
10763 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010764 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010765 expr_ty number_var;
10766 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010767 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010768 )
10769 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010770 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010771 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010772 goto done;
10773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010774 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010775 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10776 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010777 }
10778 { // &'(' (tuple | group | genexp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010779 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010780 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010781 return NULL;
10782 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010783 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
Guido van Rossum3941d972020-05-01 09:42:03 -070010784 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010785 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010786 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010787 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010788 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010789 )
10790 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010791 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010792 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010793 goto done;
10794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010795 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010796 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10797 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010798 }
Pablo Galindo2b74c832020-04-27 18:02:07 +010010799 { // &'[' (list | listcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010800 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010801 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010802 return NULL;
10803 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010804 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
Guido van Rossum3941d972020-05-01 09:42:03 -070010805 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010806 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010807 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010809 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010810 )
10811 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010812 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010813 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010814 goto done;
10815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010816 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010817 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10818 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010819 }
Pablo Galindo2b74c832020-04-27 18:02:07 +010010820 { // &'{' (dict | set | dictcomp | setcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010821 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010822 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010823 return NULL;
10824 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010825 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
Guido van Rossum3941d972020-05-01 09:42:03 -070010826 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010010827 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010828 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +010010829 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010830 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +010010831 )
10832 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010833 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010834 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010010835 goto done;
10836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010837 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010838 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10839 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
Pablo Galindo2b74c832020-04-27 18:02:07 +010010840 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010841 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010842 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010843 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010844 return NULL;
10845 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010846 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010847 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010848 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010849 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010850 )
10851 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010852 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010853 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10854 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010855 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010856 return NULL;
10857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010858 int _end_lineno = _token->end_lineno;
10859 UNUSED(_end_lineno); // Only used by EXTRA macro
10860 int _end_col_offset = _token->end_col_offset;
10861 UNUSED(_end_col_offset); // Only used by EXTRA macro
10862 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
10863 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010864 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010865 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010866 return NULL;
10867 }
10868 goto done;
10869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010870 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010871 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10872 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010874 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010875 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010876 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010877 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010878}
10879
10880// strings: STRING+
10881static expr_ty
10882strings_rule(Parser *p)
10883{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010884 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010885 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010886 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010887 return NULL;
10888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010889 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010890 if (_PyPegen_is_memoized(p, strings_type, &_res)) {
10891 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010892 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010894 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010895 { // STRING+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010896 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010897 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010898 return NULL;
10899 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010900 D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010901 asdl_seq * a;
10902 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010903 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010904 )
10905 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010906 D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010907 _res = _PyPegen_concatenate_strings ( p , a );
10908 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010909 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010910 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010911 return NULL;
10912 }
10913 goto done;
10914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010915 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010916 D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
10917 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010919 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010920 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010921 _PyPegen_insert_memo(p, _mark, strings_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010010922 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010923 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010924}
10925
10926// list: '[' star_named_expressions? ']'
10927static expr_ty
10928list_rule(Parser *p)
10929{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010930 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010931 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010932 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010933 return NULL;
10934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010935 expr_ty _res = NULL;
10936 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010937 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10938 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010939 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010940 return NULL;
10941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010942 int _start_lineno = p->tokens[_mark]->lineno;
10943 UNUSED(_start_lineno); // Only used by EXTRA macro
10944 int _start_col_offset = p->tokens[_mark]->col_offset;
10945 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010946 { // '[' star_named_expressions? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010947 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010948 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010949 return NULL;
10950 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010951 D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010952 Token * _literal;
10953 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010954 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010955 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010956 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010957 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010958 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010959 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010960 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010961 )
10962 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010963 D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010964 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10965 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010966 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010967 return NULL;
10968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010969 int _end_lineno = _token->end_lineno;
10970 UNUSED(_end_lineno); // Only used by EXTRA macro
10971 int _end_col_offset = _token->end_col_offset;
10972 UNUSED(_end_col_offset); // Only used by EXTRA macro
10973 _res = _Py_List ( a , Load , EXTRA );
10974 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010975 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010976 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010977 return NULL;
10978 }
10979 goto done;
10980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010981 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010982 D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
10983 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010985 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010986 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010987 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010988 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010989}
10990
10991// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
10992static expr_ty
10993listcomp_rule(Parser *p)
10994{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010995 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010996 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010997 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010998 return NULL;
10999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011000 expr_ty _res = NULL;
11001 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011002 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11003 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011004 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011005 return NULL;
11006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011007 int _start_lineno = p->tokens[_mark]->lineno;
11008 UNUSED(_start_lineno); // Only used by EXTRA macro
11009 int _start_col_offset = p->tokens[_mark]->col_offset;
11010 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011011 { // '[' named_expression for_if_clauses ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011012 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011013 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011014 return NULL;
11015 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011016 D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011017 Token * _literal;
11018 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011019 expr_ty a;
11020 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011021 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011022 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011023 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011024 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011025 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011026 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011027 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011028 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011029 )
11030 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011031 D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011032 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11033 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011034 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011035 return NULL;
11036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011037 int _end_lineno = _token->end_lineno;
11038 UNUSED(_end_lineno); // Only used by EXTRA macro
11039 int _end_col_offset = _token->end_col_offset;
11040 UNUSED(_end_col_offset); // Only used by EXTRA macro
11041 _res = _Py_ListComp ( a , b , EXTRA );
11042 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011043 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011044 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011045 return NULL;
11046 }
11047 goto done;
11048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011049 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011050 D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
11051 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011052 }
11053 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011054 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011055 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011056 return NULL;
11057 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011058 D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011059 void *invalid_comprehension_var;
11060 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011061 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011062 )
11063 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011064 D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011065 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011066 goto done;
11067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011068 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011069 D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
11070 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011072 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011073 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011074 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011075 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011076}
11077
11078// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
11079static expr_ty
11080tuple_rule(Parser *p)
11081{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011082 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011083 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011084 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011085 return NULL;
11086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011087 expr_ty _res = NULL;
11088 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011089 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11090 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011091 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011092 return NULL;
11093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011094 int _start_lineno = p->tokens[_mark]->lineno;
11095 UNUSED(_start_lineno); // Only used by EXTRA macro
11096 int _start_col_offset = p->tokens[_mark]->col_offset;
11097 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011098 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011099 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011100 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011101 return NULL;
11102 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011103 D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011104 Token * _literal;
11105 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011106 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011107 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011108 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011109 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011110 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011111 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011112 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011113 )
11114 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011115 D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011116 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11117 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011118 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011119 return NULL;
11120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011121 int _end_lineno = _token->end_lineno;
11122 UNUSED(_end_lineno); // Only used by EXTRA macro
11123 int _end_col_offset = _token->end_col_offset;
11124 UNUSED(_end_col_offset); // Only used by EXTRA macro
11125 _res = _Py_Tuple ( a , Load , EXTRA );
11126 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011127 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011128 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011129 return NULL;
11130 }
11131 goto done;
11132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011133 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011134 D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
11135 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011137 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011138 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011139 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011140 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011141}
11142
11143// group: '(' (yield_expr | named_expression) ')'
11144static expr_ty
11145group_rule(Parser *p)
11146{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011147 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011148 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011149 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011150 return NULL;
11151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011152 expr_ty _res = NULL;
11153 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011154 { // '(' (yield_expr | named_expression) ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011155 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011156 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011157 return NULL;
11158 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011159 D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011160 Token * _literal;
11161 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011162 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011163 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011164 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011165 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011166 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011167 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011168 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011169 )
11170 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011171 D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011172 _res = a;
11173 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011174 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011175 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011176 return NULL;
11177 }
11178 goto done;
11179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011180 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011181 D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
11182 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011184 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011185 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011186 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011187 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011188}
11189
11190// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
11191static expr_ty
11192genexp_rule(Parser *p)
11193{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011194 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011195 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011196 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011197 return NULL;
11198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011199 expr_ty _res = NULL;
11200 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011201 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11202 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011203 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011204 return NULL;
11205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011206 int _start_lineno = p->tokens[_mark]->lineno;
11207 UNUSED(_start_lineno); // Only used by EXTRA macro
11208 int _start_col_offset = p->tokens[_mark]->col_offset;
11209 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011210 { // '(' expression for_if_clauses ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011211 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011212 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011213 return NULL;
11214 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011215 D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' expression for_if_clauses ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011216 Token * _literal;
11217 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011218 expr_ty a;
11219 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011220 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011221 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011222 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011223 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011224 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011225 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011226 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011227 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011228 )
11229 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011230 D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' expression for_if_clauses ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011231 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11232 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011233 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011234 return NULL;
11235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011236 int _end_lineno = _token->end_lineno;
11237 UNUSED(_end_lineno); // Only used by EXTRA macro
11238 int _end_col_offset = _token->end_col_offset;
11239 UNUSED(_end_col_offset); // Only used by EXTRA macro
11240 _res = _Py_GeneratorExp ( a , b , EXTRA );
11241 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011242 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011243 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011244 return NULL;
11245 }
11246 goto done;
11247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011248 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011249 D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
11250 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' expression for_if_clauses ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011251 }
11252 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011253 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011254 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011255 return NULL;
11256 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011257 D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011258 void *invalid_comprehension_var;
11259 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011260 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011261 )
11262 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011263 D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011264 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011265 goto done;
11266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011267 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011268 D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
11269 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011271 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011272 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011273 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011274 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011275}
11276
11277// set: '{' expressions_list '}'
11278static expr_ty
11279set_rule(Parser *p)
11280{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011281 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011282 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011283 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011284 return NULL;
11285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011286 expr_ty _res = NULL;
11287 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011288 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11289 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011290 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011291 return NULL;
11292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011293 int _start_lineno = p->tokens[_mark]->lineno;
11294 UNUSED(_start_lineno); // Only used by EXTRA macro
11295 int _start_col_offset = p->tokens[_mark]->col_offset;
11296 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011297 { // '{' expressions_list '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011298 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011299 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011300 return NULL;
11301 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011302 D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' expressions_list '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011303 Token * _literal;
11304 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011305 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011306 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011307 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011308 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011309 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011310 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011311 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011312 )
11313 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011314 D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' expressions_list '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011315 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11316 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011317 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011318 return NULL;
11319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011320 int _end_lineno = _token->end_lineno;
11321 UNUSED(_end_lineno); // Only used by EXTRA macro
11322 int _end_col_offset = _token->end_col_offset;
11323 UNUSED(_end_col_offset); // Only used by EXTRA macro
11324 _res = _Py_Set ( a , EXTRA );
11325 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011326 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011327 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011328 return NULL;
11329 }
11330 goto done;
11331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011332 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011333 D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
11334 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' expressions_list '}'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011336 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011337 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011338 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011340}
11341
11342// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
11343static expr_ty
11344setcomp_rule(Parser *p)
11345{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011346 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011347 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011348 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011349 return NULL;
11350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011351 expr_ty _res = NULL;
11352 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011353 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11354 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011355 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011356 return NULL;
11357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011358 int _start_lineno = p->tokens[_mark]->lineno;
11359 UNUSED(_start_lineno); // Only used by EXTRA macro
11360 int _start_col_offset = p->tokens[_mark]->col_offset;
11361 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011362 { // '{' expression for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011363 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011364 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011365 return NULL;
11366 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011367 D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' expression for_if_clauses '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011368 Token * _literal;
11369 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011370 expr_ty a;
11371 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011372 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011373 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011374 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011375 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011377 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011378 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011379 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011380 )
11381 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011382 D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' expression for_if_clauses '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011383 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11384 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011385 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011386 return NULL;
11387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011388 int _end_lineno = _token->end_lineno;
11389 UNUSED(_end_lineno); // Only used by EXTRA macro
11390 int _end_col_offset = _token->end_col_offset;
11391 UNUSED(_end_col_offset); // Only used by EXTRA macro
11392 _res = _Py_SetComp ( a , b , EXTRA );
11393 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011394 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011395 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011396 return NULL;
11397 }
11398 goto done;
11399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011400 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011401 D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
11402 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' expression for_if_clauses '}'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011403 }
11404 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011405 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011406 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011407 return NULL;
11408 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011409 D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011410 void *invalid_comprehension_var;
11411 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011412 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011413 )
11414 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011415 D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011416 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011417 goto done;
11418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011419 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011420 D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
11421 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011423 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011424 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011425 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011426 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011427}
11428
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011429// dict: '{' double_starred_kvpairs? '}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011430static expr_ty
11431dict_rule(Parser *p)
11432{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011433 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011434 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011435 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011436 return NULL;
11437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011438 expr_ty _res = NULL;
11439 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011440 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11441 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011442 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011443 return NULL;
11444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011445 int _start_lineno = p->tokens[_mark]->lineno;
11446 UNUSED(_start_lineno); // Only used by EXTRA macro
11447 int _start_col_offset = p->tokens[_mark]->col_offset;
11448 UNUSED(_start_col_offset); // Only used by EXTRA macro
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011449 { // '{' double_starred_kvpairs? '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011450 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011451 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011452 return NULL;
11453 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011454 D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011455 Token * _literal;
11456 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011457 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011458 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011459 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011460 &&
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011461 (a = double_starred_kvpairs_rule(p), 1) // double_starred_kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011462 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011463 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011464 )
11465 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011466 D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011467 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11468 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011469 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011470 return NULL;
11471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011472 int _end_lineno = _token->end_lineno;
11473 UNUSED(_end_lineno); // Only used by EXTRA macro
11474 int _end_col_offset = _token->end_col_offset;
11475 UNUSED(_end_col_offset); // Only used by EXTRA macro
11476 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
11477 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011478 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011479 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011480 return NULL;
11481 }
11482 goto done;
11483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011484 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011485 D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
11486 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011488 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011489 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011490 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011491 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011492}
11493
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011494// dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011495static expr_ty
11496dictcomp_rule(Parser *p)
11497{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011498 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011499 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011500 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011501 return NULL;
11502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011503 expr_ty _res = NULL;
11504 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011505 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11506 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011507 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011508 return NULL;
11509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011510 int _start_lineno = p->tokens[_mark]->lineno;
11511 UNUSED(_start_lineno); // Only used by EXTRA macro
11512 int _start_col_offset = p->tokens[_mark]->col_offset;
11513 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011514 { // '{' kvpair for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011515 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011516 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011517 return NULL;
11518 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011519 D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011520 Token * _literal;
11521 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011522 KeyValuePair* a;
11523 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011524 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011525 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011526 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011527 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011528 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011529 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011530 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011531 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011532 )
11533 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011534 D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011535 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11536 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011537 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011538 return NULL;
11539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011540 int _end_lineno = _token->end_lineno;
11541 UNUSED(_end_lineno); // Only used by EXTRA macro
11542 int _end_col_offset = _token->end_col_offset;
11543 UNUSED(_end_col_offset); // Only used by EXTRA macro
11544 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
11545 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011546 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011547 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011548 return NULL;
11549 }
11550 goto done;
11551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011552 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011553 D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
11554 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011555 }
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011556 { // invalid_dict_comprehension
11557 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011558 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011559 return NULL;
11560 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011561 D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011562 void *invalid_dict_comprehension_var;
11563 if (
11564 (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p)) // invalid_dict_comprehension
11565 )
11566 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011567 D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011568 _res = invalid_dict_comprehension_var;
11569 goto done;
11570 }
11571 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011572 D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
11573 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011575 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011576 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011577 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011578 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011579}
11580
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011581// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011582static asdl_seq*
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011583double_starred_kvpairs_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011584{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011585 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011586 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011587 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011588 return NULL;
11589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011590 asdl_seq* _res = NULL;
11591 int _mark = p->mark;
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011592 { // ','.double_starred_kvpair+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011593 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011594 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011595 return NULL;
11596 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011597 D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011598 void *_opt_var;
11599 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011600 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011601 if (
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011602 (a = _gather_102_rule(p)) // ','.double_starred_kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011603 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011604 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011605 )
11606 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011607 D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011608 _res = a;
11609 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011610 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011611 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011612 return NULL;
11613 }
11614 goto done;
11615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011616 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011617 D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
11618 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011620 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011621 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011622 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011623 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011624}
11625
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011626// double_starred_kvpair: '**' bitwise_or | kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011627static KeyValuePair*
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011628double_starred_kvpair_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011629{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011630 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011631 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011632 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011633 return NULL;
11634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011635 KeyValuePair* _res = NULL;
11636 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011637 { // '**' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011638 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011639 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011640 return NULL;
11641 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011642 D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011643 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011644 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011645 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011646 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011647 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011648 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011649 )
11650 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011651 D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011652 _res = _PyPegen_key_value_pair ( p , NULL , a );
11653 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011654 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011655 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011656 return NULL;
11657 }
11658 goto done;
11659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011660 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011661 D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
11662 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011663 }
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011664 { // kvpair
11665 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011666 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011667 return NULL;
11668 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011669 D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011670 KeyValuePair* kvpair_var;
11671 if (
11672 (kvpair_var = kvpair_rule(p)) // kvpair
11673 )
11674 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011675 D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011676 _res = kvpair_var;
11677 goto done;
11678 }
11679 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011680 D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
11681 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011682 }
11683 _res = NULL;
11684 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011685 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011686 return _res;
11687}
11688
11689// kvpair: expression ':' expression
11690static KeyValuePair*
11691kvpair_rule(Parser *p)
11692{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011693 D(p->level++);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011694 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011695 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011696 return NULL;
11697 }
11698 KeyValuePair* _res = NULL;
11699 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011700 { // expression ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011701 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011702 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011703 return NULL;
11704 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011705 D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011706 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011707 expr_ty a;
11708 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011709 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011710 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011711 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011712 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011713 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011714 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011715 )
11716 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011717 D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011718 _res = _PyPegen_key_value_pair ( p , a , b );
11719 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011720 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011721 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011722 return NULL;
11723 }
11724 goto done;
11725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011726 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011727 D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
11728 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011730 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011731 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011732 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011733 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011734}
11735
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011736// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011737static asdl_seq*
11738for_if_clauses_rule(Parser *p)
11739{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011740 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011741 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011742 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011743 return NULL;
11744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011745 asdl_seq* _res = NULL;
11746 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011747 { // for_if_clause+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011748 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011749 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011750 return NULL;
11751 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011752 D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
Guido van Rossum3941d972020-05-01 09:42:03 -070011753 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011754 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011755 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011756 )
11757 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011758 D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011759 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011760 goto done;
11761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011762 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011763 D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
11764 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011766 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011767 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011768 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011769 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011770}
11771
11772// for_if_clause:
11773// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
11774// | 'for' star_targets 'in' disjunction (('if' disjunction))*
11775static comprehension_ty
11776for_if_clause_rule(Parser *p)
11777{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011778 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011779 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011780 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011781 return NULL;
11782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011783 comprehension_ty _res = NULL;
11784 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011785 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011786 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011787 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011788 return NULL;
11789 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011790 D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011791 Token * _keyword;
11792 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011793 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +010011794 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011795 expr_ty b;
11796 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011797 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011798 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011799 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011800 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011801 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011802 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011803 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011804 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011805 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011806 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011807 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011808 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011809 )
11810 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011811 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))*"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011812 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
11813 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011814 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011815 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011816 return NULL;
11817 }
11818 goto done;
11819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011820 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011821 D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
11822 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011823 }
11824 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011825 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011826 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011827 return NULL;
11828 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011829 D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' disjunction (('if' disjunction))*"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011830 Token * _keyword;
11831 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011832 expr_ty a;
11833 expr_ty b;
11834 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011835 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011836 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011837 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011838 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011839 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011840 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011841 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011842 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011843 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011844 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011845 )
11846 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011847 D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' disjunction (('if' disjunction))*"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011848 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
11849 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011850 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011851 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011852 return NULL;
11853 }
11854 goto done;
11855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011856 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011857 D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
11858 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' disjunction (('if' disjunction))*"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011860 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011861 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011862 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011863 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011864}
11865
11866// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
11867static expr_ty
11868yield_expr_rule(Parser *p)
11869{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011870 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011871 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011872 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011873 return NULL;
11874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011875 expr_ty _res = NULL;
11876 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011877 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11878 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011879 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011880 return NULL;
11881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011882 int _start_lineno = p->tokens[_mark]->lineno;
11883 UNUSED(_start_lineno); // Only used by EXTRA macro
11884 int _start_col_offset = p->tokens[_mark]->col_offset;
11885 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011886 { // 'yield' 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011887 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011888 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011889 return NULL;
11890 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011891 D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011892 Token * _keyword;
11893 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011894 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011895 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011896 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011897 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011898 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011899 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011900 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011901 )
11902 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011903 D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011904 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11905 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011906 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011907 return NULL;
11908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011909 int _end_lineno = _token->end_lineno;
11910 UNUSED(_end_lineno); // Only used by EXTRA macro
11911 int _end_col_offset = _token->end_col_offset;
11912 UNUSED(_end_col_offset); // Only used by EXTRA macro
11913 _res = _Py_YieldFrom ( a , EXTRA );
11914 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011915 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011916 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011917 return NULL;
11918 }
11919 goto done;
11920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011921 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011922 D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11923 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011924 }
11925 { // 'yield' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011926 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011927 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011928 return NULL;
11929 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011930 D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011931 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011932 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011933 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011934 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011935 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011936 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011937 )
11938 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011939 D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011940 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11941 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011942 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011943 return NULL;
11944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011945 int _end_lineno = _token->end_lineno;
11946 UNUSED(_end_lineno); // Only used by EXTRA macro
11947 int _end_col_offset = _token->end_col_offset;
11948 UNUSED(_end_col_offset); // Only used by EXTRA macro
11949 _res = _Py_Yield ( a , EXTRA );
11950 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011951 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011952 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011953 return NULL;
11954 }
11955 goto done;
11956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011957 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011958 D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11959 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011961 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011962 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011963 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011964 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011965}
11966
11967// arguments: args ','? &')' | incorrect_arguments
11968static expr_ty
11969arguments_rule(Parser *p)
11970{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011971 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011972 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011973 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011974 return NULL;
11975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011976 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011977 if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
11978 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011979 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011981 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011982 { // args ','? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011983 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011984 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011985 return NULL;
11986 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011987 D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011988 void *_opt_var;
11989 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011990 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011991 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011992 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011993 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011994 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011995 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011996 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011997 )
11998 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011999 D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012000 _res = a;
12001 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012002 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012003 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012004 return NULL;
12005 }
12006 goto done;
12007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012008 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012009 D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
12010 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012011 }
12012 { // incorrect_arguments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012013 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012014 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012015 return NULL;
12016 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012017 D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "incorrect_arguments"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012018 void *incorrect_arguments_var;
12019 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012020 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012021 )
12022 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012023 D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "incorrect_arguments"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012024 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012025 goto done;
12026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012027 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012028 D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
12029 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "incorrect_arguments"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012031 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012032 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012033 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010012034 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012035 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012036}
12037
12038// args: starred_expression [',' args] | kwargs | named_expression [',' args]
12039static expr_ty
12040args_rule(Parser *p)
12041{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012042 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012043 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012044 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012045 return NULL;
12046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012047 expr_ty _res = NULL;
12048 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012049 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12050 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012051 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012052 return NULL;
12053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012054 int _start_lineno = p->tokens[_mark]->lineno;
12055 UNUSED(_start_lineno); // Only used by EXTRA macro
12056 int _start_col_offset = p->tokens[_mark]->col_offset;
12057 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012058 { // starred_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012059 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012060 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012061 return NULL;
12062 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012063 D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression [',' args]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012064 expr_ty a;
12065 void *b;
12066 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012067 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012068 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012069 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012070 )
12071 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012072 D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression [',' args]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012073 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12074 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012075 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012076 return NULL;
12077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012078 int _end_lineno = _token->end_lineno;
12079 UNUSED(_end_lineno); // Only used by EXTRA macro
12080 int _end_col_offset = _token->end_col_offset;
12081 UNUSED(_end_col_offset); // Only used by EXTRA macro
12082 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , ( b ) ? CHECK ( _PyPegen_seq_insert_in_front ( p , a , ( ( expr_ty ) b ) -> v . Call . args ) ) : CHECK ( _PyPegen_singleton_seq ( p , a ) ) , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
12083 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012084 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012085 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012086 return NULL;
12087 }
12088 goto done;
12089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012090 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012091 D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
12092 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression [',' args]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012093 }
12094 { // kwargs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012095 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012096 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012097 return NULL;
12098 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012099 D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012100 asdl_seq* a;
12101 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012102 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012103 )
12104 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012105 D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012106 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12107 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012108 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012109 return NULL;
12110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012111 int _end_lineno = _token->end_lineno;
12112 UNUSED(_end_lineno); // Only used by EXTRA macro
12113 int _end_col_offset = _token->end_col_offset;
12114 UNUSED(_end_col_offset); // Only used by EXTRA macro
12115 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , CHECK_NULL_ALLOWED ( _PyPegen_seq_extract_starred_exprs ( p , a ) ) , CHECK_NULL_ALLOWED ( _PyPegen_seq_delete_starred_exprs ( p , a ) ) , EXTRA );
12116 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012117 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012118 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012119 return NULL;
12120 }
12121 goto done;
12122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012123 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012124 D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
12125 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012126 }
12127 { // named_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012128 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012129 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012130 return NULL;
12131 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012132 D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression [',' args]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012133 expr_ty a;
12134 void *b;
12135 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012136 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012138 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012139 )
12140 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012141 D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression [',' args]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012142 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12143 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012144 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012145 return NULL;
12146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012147 int _end_lineno = _token->end_lineno;
12148 UNUSED(_end_lineno); // Only used by EXTRA macro
12149 int _end_col_offset = _token->end_col_offset;
12150 UNUSED(_end_col_offset); // Only used by EXTRA macro
12151 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , ( b ) ? CHECK ( _PyPegen_seq_insert_in_front ( p , a , ( ( expr_ty ) b ) -> v . Call . args ) ) : CHECK ( _PyPegen_singleton_seq ( p , a ) ) , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
12152 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012153 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012154 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012155 return NULL;
12156 }
12157 goto done;
12158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012159 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012160 D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
12161 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression [',' args]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012163 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012164 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012165 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012166 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012167}
12168
12169// kwargs:
12170// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
12171// | ','.kwarg_or_starred+
12172// | ','.kwarg_or_double_starred+
12173static asdl_seq*
12174kwargs_rule(Parser *p)
12175{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012176 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012177 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012178 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012179 return NULL;
12180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012181 asdl_seq* _res = NULL;
12182 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012183 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012184 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012185 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012186 return NULL;
12187 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012188 D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012189 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012190 asdl_seq * a;
12191 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012192 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012193 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012194 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012195 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012196 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012197 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012198 )
12199 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012200 D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012201 _res = _PyPegen_join_sequences ( p , a , b );
12202 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012203 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012204 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012205 return NULL;
12206 }
12207 goto done;
12208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012209 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012210 D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
12211 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012212 }
12213 { // ','.kwarg_or_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012214 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012215 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012216 return NULL;
12217 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012218 D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
Guido van Rossum3941d972020-05-01 09:42:03 -070012219 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012220 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012221 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012222 )
12223 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012224 D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012225 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012226 goto done;
12227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012228 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012229 D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
12230 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012231 }
12232 { // ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012233 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012234 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012235 return NULL;
12236 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012237 D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
Guido van Rossum3941d972020-05-01 09:42:03 -070012238 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012239 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012240 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012241 )
12242 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012243 D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012244 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012245 goto done;
12246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012247 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012248 D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
12249 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012251 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012252 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012253 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012254 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012255}
12256
12257// starred_expression: '*' expression
12258static expr_ty
12259starred_expression_rule(Parser *p)
12260{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012261 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012262 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012263 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012264 return NULL;
12265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012266 expr_ty _res = NULL;
12267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12269 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012270 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012271 return NULL;
12272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012273 int _start_lineno = p->tokens[_mark]->lineno;
12274 UNUSED(_start_lineno); // Only used by EXTRA macro
12275 int _start_col_offset = p->tokens[_mark]->col_offset;
12276 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012277 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012278 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012279 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012280 return NULL;
12281 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012282 D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012283 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012284 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012285 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012286 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012288 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012289 )
12290 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012291 D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012292 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12293 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012294 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012295 return NULL;
12296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012297 int _end_lineno = _token->end_lineno;
12298 UNUSED(_end_lineno); // Only used by EXTRA macro
12299 int _end_col_offset = _token->end_col_offset;
12300 UNUSED(_end_col_offset); // Only used by EXTRA macro
12301 _res = _Py_Starred ( a , Load , EXTRA );
12302 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012303 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012304 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012305 return NULL;
12306 }
12307 goto done;
12308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012309 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012310 D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
12311 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012313 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012314 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012315 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012316 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012317}
12318
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012319// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012320static KeywordOrStarred*
12321kwarg_or_starred_rule(Parser *p)
12322{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012323 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012324 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012325 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012326 return NULL;
12327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012328 KeywordOrStarred* _res = NULL;
12329 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012330 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12331 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012332 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012333 return NULL;
12334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012335 int _start_lineno = p->tokens[_mark]->lineno;
12336 UNUSED(_start_lineno); // Only used by EXTRA macro
12337 int _start_col_offset = p->tokens[_mark]->col_offset;
12338 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012339 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012340 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012341 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012342 return NULL;
12343 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012344 D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012345 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012346 expr_ty a;
12347 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012348 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012349 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012350 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012351 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012352 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012353 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012354 )
12355 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012356 D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012357 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12358 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012359 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012360 return NULL;
12361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012362 int _end_lineno = _token->end_lineno;
12363 UNUSED(_end_lineno); // Only used by EXTRA macro
12364 int _end_col_offset = _token->end_col_offset;
12365 UNUSED(_end_col_offset); // Only used by EXTRA macro
12366 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
12367 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012368 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012369 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012370 return NULL;
12371 }
12372 goto done;
12373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012374 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012375 D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
12376 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012377 }
12378 { // starred_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012379 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012380 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012381 return NULL;
12382 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012383 D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012384 expr_ty a;
12385 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012386 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012387 )
12388 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012389 D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012390 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
12391 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012392 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012393 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012394 return NULL;
12395 }
12396 goto done;
12397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012398 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012399 D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
12400 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012401 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012402 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012403 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012404 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012405 return NULL;
12406 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012407 D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012408 void *invalid_kwarg_var;
12409 if (
12410 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
12411 )
12412 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012413 D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012414 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012415 goto done;
12416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012417 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012418 D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
12419 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012421 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012422 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012423 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012424 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012425}
12426
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012427// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012428static KeywordOrStarred*
12429kwarg_or_double_starred_rule(Parser *p)
12430{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012431 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012432 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012433 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012434 return NULL;
12435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012436 KeywordOrStarred* _res = NULL;
12437 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012438 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12439 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012440 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012441 return NULL;
12442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012443 int _start_lineno = p->tokens[_mark]->lineno;
12444 UNUSED(_start_lineno); // Only used by EXTRA macro
12445 int _start_col_offset = p->tokens[_mark]->col_offset;
12446 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012447 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012448 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012449 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012450 return NULL;
12451 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012452 D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012453 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012454 expr_ty a;
12455 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012456 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012457 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012458 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012459 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012460 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012461 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012462 )
12463 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012464 D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012465 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12466 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012467 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012468 return NULL;
12469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012470 int _end_lineno = _token->end_lineno;
12471 UNUSED(_end_lineno); // Only used by EXTRA macro
12472 int _end_col_offset = _token->end_col_offset;
12473 UNUSED(_end_col_offset); // Only used by EXTRA macro
12474 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
12475 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012476 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012477 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012478 return NULL;
12479 }
12480 goto done;
12481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012482 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012483 D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
12484 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012485 }
12486 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012487 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012488 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012489 return NULL;
12490 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012491 D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012492 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012493 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012494 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012495 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012497 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012498 )
12499 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012500 D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012501 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12502 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012503 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012504 return NULL;
12505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012506 int _end_lineno = _token->end_lineno;
12507 UNUSED(_end_lineno); // Only used by EXTRA macro
12508 int _end_col_offset = _token->end_col_offset;
12509 UNUSED(_end_col_offset); // Only used by EXTRA macro
12510 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
12511 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012512 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012513 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012514 return NULL;
12515 }
12516 goto done;
12517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012518 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012519 D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
12520 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012521 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012522 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012523 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012524 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012525 return NULL;
12526 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012527 D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012528 void *invalid_kwarg_var;
12529 if (
12530 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
12531 )
12532 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012533 D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012534 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012535 goto done;
12536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012537 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012538 D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
12539 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012541 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012542 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012543 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012544 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012545}
12546
12547// star_targets: star_target !',' | star_target ((',' star_target))* ','?
12548static expr_ty
12549star_targets_rule(Parser *p)
12550{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012551 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012552 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012553 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012554 return NULL;
12555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012556 expr_ty _res = NULL;
12557 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012558 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12559 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012560 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012561 return NULL;
12562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012563 int _start_lineno = p->tokens[_mark]->lineno;
12564 UNUSED(_start_lineno); // Only used by EXTRA macro
12565 int _start_col_offset = p->tokens[_mark]->col_offset;
12566 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012567 { // star_target !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012568 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012569 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012570 return NULL;
12571 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012572 D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012573 expr_ty a;
12574 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012575 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012576 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012577 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012578 )
12579 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012580 D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012581 _res = a;
12582 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012583 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012584 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012585 return NULL;
12586 }
12587 goto done;
12588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012589 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012590 D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
12591 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012592 }
12593 { // star_target ((',' star_target))* ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012594 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012595 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012596 return NULL;
12597 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012598 D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012599 void *_opt_var;
12600 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012601 expr_ty a;
12602 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012603 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012604 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012605 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012606 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012607 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012608 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012609 )
12610 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012611 D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012612 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12613 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012614 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012615 return NULL;
12616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012617 int _end_lineno = _token->end_lineno;
12618 UNUSED(_end_lineno); // Only used by EXTRA macro
12619 int _end_col_offset = _token->end_col_offset;
12620 UNUSED(_end_col_offset); // Only used by EXTRA macro
12621 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
12622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012623 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012624 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012625 return NULL;
12626 }
12627 goto done;
12628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012629 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012630 D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
12631 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012633 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012634 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012635 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012636 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012637}
12638
12639// star_targets_seq: ','.star_target+ ','?
12640static asdl_seq*
12641star_targets_seq_rule(Parser *p)
12642{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012643 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012644 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012645 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012646 return NULL;
12647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012648 asdl_seq* _res = NULL;
12649 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012650 { // ','.star_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012651 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012652 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012653 return NULL;
12654 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012655 D(fprintf(stderr, "%*c> star_targets_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012656 void *_opt_var;
12657 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012658 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012659 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012660 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012661 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012662 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012663 )
12664 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012665 D(fprintf(stderr, "%*c+ star_targets_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012666 _res = a;
12667 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012668 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012669 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012670 return NULL;
12671 }
12672 goto done;
12673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012674 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012675 D(fprintf(stderr, "%*c%s star_targets_seq[%d-%d]: %s failed!\n", p->level, ' ',
12676 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012678 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012679 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012680 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012681 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012682}
12683
12684// star_target:
12685// | '*' (!'*' star_target)
12686// | t_primary '.' NAME !t_lookahead
12687// | t_primary '[' slices ']' !t_lookahead
12688// | star_atom
12689static expr_ty
12690star_target_rule(Parser *p)
12691{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012692 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012693 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012694 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012695 return NULL;
12696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012697 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012698 if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
12699 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012700 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012702 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012703 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12704 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012705 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012706 return NULL;
12707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012708 int _start_lineno = p->tokens[_mark]->lineno;
12709 UNUSED(_start_lineno); // Only used by EXTRA macro
12710 int _start_col_offset = p->tokens[_mark]->col_offset;
12711 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012712 { // '*' (!'*' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012713 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012714 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012715 return NULL;
12716 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012717 D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012718 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012719 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012720 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012721 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012722 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012723 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012724 )
12725 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012726 D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012727 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12728 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012729 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012730 return NULL;
12731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012732 int _end_lineno = _token->end_lineno;
12733 UNUSED(_end_lineno); // Only used by EXTRA macro
12734 int _end_col_offset = _token->end_col_offset;
12735 UNUSED(_end_col_offset); // Only used by EXTRA macro
12736 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
12737 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012738 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012739 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012740 return NULL;
12741 }
12742 goto done;
12743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012744 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012745 D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
12746 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012747 }
12748 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012749 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012750 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012751 return NULL;
12752 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012753 D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012754 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012755 expr_ty a;
12756 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012757 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012758 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012759 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012760 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012762 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012763 &&
12764 _PyPegen_lookahead(0, t_lookahead_rule, p)
12765 )
12766 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012767 D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012768 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12769 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012770 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012771 return NULL;
12772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012773 int _end_lineno = _token->end_lineno;
12774 UNUSED(_end_lineno); // Only used by EXTRA macro
12775 int _end_col_offset = _token->end_col_offset;
12776 UNUSED(_end_col_offset); // Only used by EXTRA macro
12777 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
12778 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012779 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012780 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012781 return NULL;
12782 }
12783 goto done;
12784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012785 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012786 D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
12787 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012788 }
12789 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012790 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012791 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012792 return NULL;
12793 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012794 D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012795 Token * _literal;
12796 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012797 expr_ty a;
12798 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012799 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012800 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012801 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012802 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012804 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012805 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012806 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012807 &&
12808 _PyPegen_lookahead(0, t_lookahead_rule, p)
12809 )
12810 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012811 D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012812 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12813 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012814 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012815 return NULL;
12816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012817 int _end_lineno = _token->end_lineno;
12818 UNUSED(_end_lineno); // Only used by EXTRA macro
12819 int _end_col_offset = _token->end_col_offset;
12820 UNUSED(_end_col_offset); // Only used by EXTRA macro
12821 _res = _Py_Subscript ( a , b , Store , EXTRA );
12822 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012823 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012824 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012825 return NULL;
12826 }
12827 goto done;
12828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012829 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012830 D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
12831 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012832 }
12833 { // star_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012834 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012835 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012836 return NULL;
12837 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012838 D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012839 expr_ty star_atom_var;
12840 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012841 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012842 )
12843 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012844 D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012845 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012846 goto done;
12847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012848 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012849 D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
12850 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012852 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012853 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012854 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010012855 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012856 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012857}
12858
12859// star_atom:
12860// | NAME
12861// | '(' star_target ')'
12862// | '(' star_targets_seq? ')'
12863// | '[' star_targets_seq? ']'
12864static expr_ty
12865star_atom_rule(Parser *p)
12866{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012867 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012868 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012869 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012870 return NULL;
12871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012872 expr_ty _res = NULL;
12873 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012874 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12875 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012876 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012877 return NULL;
12878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012879 int _start_lineno = p->tokens[_mark]->lineno;
12880 UNUSED(_start_lineno); // Only used by EXTRA macro
12881 int _start_col_offset = p->tokens[_mark]->col_offset;
12882 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012883 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012884 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012885 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012886 return NULL;
12887 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012888 D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012889 expr_ty a;
12890 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012891 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012892 )
12893 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012894 D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012895 _res = _PyPegen_set_expr_context ( p , a , Store );
12896 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012897 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012898 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012899 return NULL;
12900 }
12901 goto done;
12902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012903 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012904 D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
12905 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012906 }
12907 { // '(' star_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012908 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012909 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012910 return NULL;
12911 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012912 D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012913 Token * _literal;
12914 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012915 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012916 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012917 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012918 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012919 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012920 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012921 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012922 )
12923 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012924 D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012925 _res = _PyPegen_set_expr_context ( p , a , Store );
12926 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012927 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012928 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012929 return NULL;
12930 }
12931 goto done;
12932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012933 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012934 D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
12935 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012936 }
12937 { // '(' star_targets_seq? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012938 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012939 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012940 return NULL;
12941 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012942 D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_seq? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012943 Token * _literal;
12944 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012945 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012946 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012947 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012948 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012949 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012950 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012951 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012952 )
12953 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012954 D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_seq? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012955 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12956 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012957 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012958 return NULL;
12959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012960 int _end_lineno = _token->end_lineno;
12961 UNUSED(_end_lineno); // Only used by EXTRA macro
12962 int _end_col_offset = _token->end_col_offset;
12963 UNUSED(_end_col_offset); // Only used by EXTRA macro
12964 _res = _Py_Tuple ( a , Store , EXTRA );
12965 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012966 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012967 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012968 return NULL;
12969 }
12970 goto done;
12971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012972 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012973 D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
12974 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_seq? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012975 }
12976 { // '[' star_targets_seq? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012977 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012978 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012979 return NULL;
12980 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012981 D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_seq? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012982 Token * _literal;
12983 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012984 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012985 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012986 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012987 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012988 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012989 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012990 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012991 )
12992 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012993 D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_seq? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012994 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12995 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012996 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012997 return NULL;
12998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012999 int _end_lineno = _token->end_lineno;
13000 UNUSED(_end_lineno); // Only used by EXTRA macro
13001 int _end_col_offset = _token->end_col_offset;
13002 UNUSED(_end_col_offset); // Only used by EXTRA macro
13003 _res = _Py_List ( a , Store , EXTRA );
13004 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013005 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013006 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013007 return NULL;
13008 }
13009 goto done;
13010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013011 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013012 D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
13013 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_seq? ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013015 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013016 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013017 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013018 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013019}
13020
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013021// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013022static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013023single_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013024{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013025 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013026 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013027 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013028 return NULL;
13029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013030 expr_ty _res = NULL;
13031 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013032 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013033 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013034 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013035 return NULL;
13036 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013037 D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013038 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013039 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013040 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013041 )
13042 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013043 D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013044 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013045 goto done;
13046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013047 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013048 D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
13049 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013050 }
13051 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013052 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013053 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013054 return NULL;
13055 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013056 D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013057 expr_ty a;
13058 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013059 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013060 )
13061 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013062 D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013063 _res = _PyPegen_set_expr_context ( p , a , Store );
13064 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013065 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013066 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013067 return NULL;
13068 }
13069 goto done;
13070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013071 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013072 D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
13073 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013074 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013075 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013076 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013077 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013078 return NULL;
13079 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013080 D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013081 Token * _literal;
13082 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013083 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013084 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013085 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013086 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013087 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013088 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013089 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013090 )
13091 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013092 D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013093 _res = a;
13094 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013095 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013096 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013097 return NULL;
13098 }
13099 goto done;
13100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013101 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013102 D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
13103 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013104 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013105 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013106 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013107 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013108 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013109}
13110
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013111// single_subscript_attribute_target:
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013112// | t_primary '.' NAME !t_lookahead
13113// | t_primary '[' slices ']' !t_lookahead
13114static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013115single_subscript_attribute_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013116{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013117 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013118 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013119 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013120 return NULL;
13121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013122 expr_ty _res = NULL;
13123 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013124 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13125 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013126 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013127 return NULL;
13128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013129 int _start_lineno = p->tokens[_mark]->lineno;
13130 UNUSED(_start_lineno); // Only used by EXTRA macro
13131 int _start_col_offset = p->tokens[_mark]->col_offset;
13132 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013133 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013134 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013135 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013136 return NULL;
13137 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013138 D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013139 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013140 expr_ty a;
13141 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013142 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013143 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013144 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013145 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013146 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013147 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013148 &&
13149 _PyPegen_lookahead(0, t_lookahead_rule, p)
13150 )
13151 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013152 D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013153 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13154 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013155 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013156 return NULL;
13157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013158 int _end_lineno = _token->end_lineno;
13159 UNUSED(_end_lineno); // Only used by EXTRA macro
13160 int _end_col_offset = _token->end_col_offset;
13161 UNUSED(_end_col_offset); // Only used by EXTRA macro
13162 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
13163 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013164 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013165 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013166 return NULL;
13167 }
13168 goto done;
13169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013170 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013171 D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
13172 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013173 }
13174 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013175 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013176 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013177 return NULL;
13178 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013179 D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013180 Token * _literal;
13181 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013182 expr_ty a;
13183 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013184 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013185 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013186 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013187 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013188 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013189 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013190 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013191 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013192 &&
13193 _PyPegen_lookahead(0, t_lookahead_rule, p)
13194 )
13195 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013196 D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013197 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13198 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013199 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013200 return NULL;
13201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013202 int _end_lineno = _token->end_lineno;
13203 UNUSED(_end_lineno); // Only used by EXTRA macro
13204 int _end_col_offset = _token->end_col_offset;
13205 UNUSED(_end_col_offset); // Only used by EXTRA macro
13206 _res = _Py_Subscript ( a , b , Store , EXTRA );
13207 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013208 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013209 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013210 return NULL;
13211 }
13212 goto done;
13213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013214 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013215 D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
13216 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013218 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013219 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013220 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013221 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013222}
13223
13224// del_targets: ','.del_target+ ','?
13225static asdl_seq*
13226del_targets_rule(Parser *p)
13227{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013228 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013229 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013230 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013231 return NULL;
13232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013233 asdl_seq* _res = NULL;
13234 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013235 { // ','.del_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013236 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013237 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013238 return NULL;
13239 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013240 D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013241 void *_opt_var;
13242 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013243 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013244 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013245 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013246 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013247 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013248 )
13249 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013250 D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013251 _res = a;
13252 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013253 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013254 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013255 return NULL;
13256 }
13257 goto done;
13258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013259 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013260 D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
13261 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013263 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013264 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013265 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013266 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013267}
13268
13269// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -070013270// | t_primary '.' NAME &del_target_end
13271// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013272// | del_t_atom
13273static expr_ty
13274del_target_rule(Parser *p)
13275{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013276 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013277 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013278 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013279 return NULL;
13280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013281 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013282 if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
13283 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013284 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013286 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013287 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13288 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013289 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013290 return NULL;
13291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013292 int _start_lineno = p->tokens[_mark]->lineno;
13293 UNUSED(_start_lineno); // Only used by EXTRA macro
13294 int _start_col_offset = p->tokens[_mark]->col_offset;
13295 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070013296 { // t_primary '.' NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013297 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013298 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013299 return NULL;
13300 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013301 D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &del_target_end"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013302 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013303 expr_ty a;
13304 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013305 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013306 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013307 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013308 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013309 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013310 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013311 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070013312 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013313 )
13314 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013315 D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &del_target_end"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013316 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13317 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013318 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013319 return NULL;
13320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013321 int _end_lineno = _token->end_lineno;
13322 UNUSED(_end_lineno); // Only used by EXTRA macro
13323 int _end_col_offset = _token->end_col_offset;
13324 UNUSED(_end_col_offset); // Only used by EXTRA macro
13325 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
13326 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013327 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013328 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013329 return NULL;
13330 }
13331 goto done;
13332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013333 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013334 D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
13335 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &del_target_end"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013336 }
Shantanu27c0d9b2020-05-11 14:53:58 -070013337 { // t_primary '[' slices ']' &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013338 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013339 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013340 return NULL;
13341 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013342 D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &del_target_end"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013343 Token * _literal;
13344 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013345 expr_ty a;
13346 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013347 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013348 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013349 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013350 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013351 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013352 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013353 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013354 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013355 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070013356 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013357 )
13358 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013359 D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &del_target_end"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013360 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13361 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013362 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013363 return NULL;
13364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013365 int _end_lineno = _token->end_lineno;
13366 UNUSED(_end_lineno); // Only used by EXTRA macro
13367 int _end_col_offset = _token->end_col_offset;
13368 UNUSED(_end_col_offset); // Only used by EXTRA macro
13369 _res = _Py_Subscript ( a , b , Del , EXTRA );
13370 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013371 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013372 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013373 return NULL;
13374 }
13375 goto done;
13376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013377 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013378 D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
13379 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &del_target_end"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013380 }
13381 { // del_t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013382 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013383 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013384 return NULL;
13385 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013386 D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013387 expr_ty del_t_atom_var;
13388 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013389 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013390 )
13391 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013392 D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013393 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013394 goto done;
13395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013396 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013397 D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
13398 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013400 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013401 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013402 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010013403 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013404 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013405}
13406
Shantanu27c0d9b2020-05-11 14:53:58 -070013407// del_t_atom:
13408// | NAME &del_target_end
13409// | '(' del_target ')'
13410// | '(' del_targets? ')'
13411// | '[' del_targets? ']'
13412// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013413static expr_ty
13414del_t_atom_rule(Parser *p)
13415{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013416 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013417 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013418 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013419 return NULL;
13420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013421 expr_ty _res = NULL;
13422 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013423 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13424 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013425 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013426 return NULL;
13427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013428 int _start_lineno = p->tokens[_mark]->lineno;
13429 UNUSED(_start_lineno); // Only used by EXTRA macro
13430 int _start_col_offset = p->tokens[_mark]->col_offset;
13431 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070013432 { // NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013433 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013434 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013435 return NULL;
13436 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013437 D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME &del_target_end"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013438 expr_ty a;
13439 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013440 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -070013441 &&
13442 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013443 )
13444 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013445 D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME &del_target_end"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013446 _res = _PyPegen_set_expr_context ( p , a , Del );
13447 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013448 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013449 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013450 return NULL;
13451 }
13452 goto done;
13453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013454 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013455 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13456 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME &del_target_end"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013457 }
13458 { // '(' del_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013459 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013460 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013461 return NULL;
13462 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013463 D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013464 Token * _literal;
13465 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013466 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013467 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013468 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013470 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013471 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013472 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013473 )
13474 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013475 D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013476 _res = _PyPegen_set_expr_context ( p , a , Del );
13477 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013478 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013479 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013480 return NULL;
13481 }
13482 goto done;
13483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013484 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013485 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13486 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013487 }
13488 { // '(' del_targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013489 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013490 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013491 return NULL;
13492 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013493 D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013494 Token * _literal;
13495 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013496 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013497 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013498 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013499 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013500 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013501 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013502 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013503 )
13504 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013505 D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013506 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13507 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013508 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013509 return NULL;
13510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013511 int _end_lineno = _token->end_lineno;
13512 UNUSED(_end_lineno); // Only used by EXTRA macro
13513 int _end_col_offset = _token->end_col_offset;
13514 UNUSED(_end_col_offset); // Only used by EXTRA macro
13515 _res = _Py_Tuple ( a , Del , EXTRA );
13516 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013517 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013518 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013519 return NULL;
13520 }
13521 goto done;
13522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013523 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013524 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13525 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013526 }
13527 { // '[' del_targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013528 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013529 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013530 return NULL;
13531 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013532 D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013533 Token * _literal;
13534 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013535 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013536 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013537 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013538 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013539 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013540 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013541 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013542 )
13543 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013544 D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013545 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13546 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013547 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013548 return NULL;
13549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013550 int _end_lineno = _token->end_lineno;
13551 UNUSED(_end_lineno); // Only used by EXTRA macro
13552 int _end_col_offset = _token->end_col_offset;
13553 UNUSED(_end_col_offset); // Only used by EXTRA macro
13554 _res = _Py_List ( a , Del , EXTRA );
13555 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013556 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013557 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013558 return NULL;
13559 }
13560 goto done;
13561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013562 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013563 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13564 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013565 }
Shantanu27c0d9b2020-05-11 14:53:58 -070013566 { // invalid_del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013567 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013568 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013569 return NULL;
13570 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013571 D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_target"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013572 void *invalid_del_target_var;
13573 if (
13574 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
13575 )
13576 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013577 D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_target"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013578 _res = invalid_del_target_var;
13579 goto done;
13580 }
13581 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013582 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13583 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_target"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013584 }
13585 _res = NULL;
13586 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013587 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070013588 return _res;
13589}
13590
13591// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
13592static void *
13593del_target_end_rule(Parser *p)
13594{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013595 D(p->level++);
Shantanu27c0d9b2020-05-11 14:53:58 -070013596 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013597 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070013598 return NULL;
13599 }
13600 void * _res = NULL;
13601 int _mark = p->mark;
13602 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013603 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013604 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013605 return NULL;
13606 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013607 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013608 Token * _literal;
13609 if (
13610 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
13611 )
13612 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013613 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013614 _res = _literal;
13615 goto done;
13616 }
13617 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013618 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13619 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013620 }
13621 { // ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013622 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013623 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013624 return NULL;
13625 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013626 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "']'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013627 Token * _literal;
13628 if (
13629 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
13630 )
13631 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013632 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "']'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013633 _res = _literal;
13634 goto done;
13635 }
13636 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013637 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13638 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "']'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013639 }
13640 { // ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013641 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013642 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013643 return NULL;
13644 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013645 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013646 Token * _literal;
13647 if (
13648 (_literal = _PyPegen_expect_token(p, 12)) // token=','
13649 )
13650 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013651 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013652 _res = _literal;
13653 goto done;
13654 }
13655 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013656 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13657 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013658 }
13659 { // ';'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013660 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013661 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013662 return NULL;
13663 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013664 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013665 Token * _literal;
13666 if (
13667 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
13668 )
13669 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013670 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013671 _res = _literal;
13672 goto done;
13673 }
13674 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013675 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13676 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013677 }
13678 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013679 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013680 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013681 return NULL;
13682 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013683 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013684 Token * newline_var;
13685 if (
13686 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
13687 )
13688 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013689 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013690 _res = newline_var;
13691 goto done;
13692 }
13693 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013694 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13695 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013697 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013698 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013699 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013700 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013701}
13702
13703// targets: ','.target+ ','?
13704static asdl_seq*
13705targets_rule(Parser *p)
13706{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013707 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013708 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013709 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013710 return NULL;
13711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013712 asdl_seq* _res = NULL;
13713 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013714 { // ','.target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013715 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013716 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013717 return NULL;
13718 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013719 D(fprintf(stderr, "%*c> targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013720 void *_opt_var;
13721 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013722 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013724 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013725 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013726 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013727 )
13728 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013729 D(fprintf(stderr, "%*c+ targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013730 _res = a;
13731 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013732 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013733 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013734 return NULL;
13735 }
13736 goto done;
13737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013738 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013739 D(fprintf(stderr, "%*c%s targets[%d-%d]: %s failed!\n", p->level, ' ',
13740 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.target+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013742 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013743 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013744 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013745 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013746}
13747
13748// target:
13749// | t_primary '.' NAME !t_lookahead
13750// | t_primary '[' slices ']' !t_lookahead
13751// | t_atom
13752static expr_ty
13753target_rule(Parser *p)
13754{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013755 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013756 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013757 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013758 return NULL;
13759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013760 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013761 if (_PyPegen_is_memoized(p, target_type, &_res)) {
13762 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013763 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013765 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013766 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13767 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013768 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013769 return NULL;
13770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013771 int _start_lineno = p->tokens[_mark]->lineno;
13772 UNUSED(_start_lineno); // Only used by EXTRA macro
13773 int _start_col_offset = p->tokens[_mark]->col_offset;
13774 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013775 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013776 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013777 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013778 return NULL;
13779 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013780 D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013781 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013782 expr_ty a;
13783 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013784 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013785 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013786 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013787 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013788 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013789 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013790 &&
13791 _PyPegen_lookahead(0, t_lookahead_rule, p)
13792 )
13793 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013794 D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013795 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13796 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013797 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013798 return NULL;
13799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013800 int _end_lineno = _token->end_lineno;
13801 UNUSED(_end_lineno); // Only used by EXTRA macro
13802 int _end_col_offset = _token->end_col_offset;
13803 UNUSED(_end_col_offset); // Only used by EXTRA macro
13804 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
13805 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013806 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013807 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013808 return NULL;
13809 }
13810 goto done;
13811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013812 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013813 D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ',
13814 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013815 }
13816 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013817 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013818 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013819 return NULL;
13820 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013821 D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013822 Token * _literal;
13823 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013824 expr_ty a;
13825 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013826 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013827 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013828 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013829 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013830 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013831 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013832 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013833 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013834 &&
13835 _PyPegen_lookahead(0, t_lookahead_rule, p)
13836 )
13837 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013838 D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013839 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13840 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013841 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013842 return NULL;
13843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013844 int _end_lineno = _token->end_lineno;
13845 UNUSED(_end_lineno); // Only used by EXTRA macro
13846 int _end_col_offset = _token->end_col_offset;
13847 UNUSED(_end_col_offset); // Only used by EXTRA macro
13848 _res = _Py_Subscript ( a , b , Store , EXTRA );
13849 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013850 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013851 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013852 return NULL;
13853 }
13854 goto done;
13855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013856 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013857 D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ',
13858 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013859 }
13860 { // t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013861 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013862 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013863 return NULL;
13864 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013865 D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013866 expr_ty t_atom_var;
13867 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013868 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013869 )
13870 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013871 D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_atom"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013872 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013873 goto done;
13874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013875 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013876 D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ',
13877 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013879 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013880 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013881 _PyPegen_insert_memo(p, _mark, target_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010013882 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013883 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013884}
13885
13886// Left-recursive
13887// t_primary:
13888// | t_primary '.' NAME &t_lookahead
13889// | t_primary '[' slices ']' &t_lookahead
13890// | t_primary genexp &t_lookahead
13891// | t_primary '(' arguments? ')' &t_lookahead
13892// | atom &t_lookahead
13893static expr_ty t_primary_raw(Parser *);
13894static expr_ty
13895t_primary_rule(Parser *p)
13896{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013897 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013898 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013899 if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
13900 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013901 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013903 int _mark = p->mark;
13904 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013905 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013906 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013907 if (tmpvar_8) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013908 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013909 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013911 p->mark = _mark;
13912 void *_raw = t_primary_raw(p);
13913 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013914 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013915 _resmark = p->mark;
13916 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013918 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013919 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013920 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013921}
13922static expr_ty
13923t_primary_raw(Parser *p)
13924{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013925 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013926 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013927 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013928 return NULL;
13929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013930 expr_ty _res = NULL;
13931 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013932 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13933 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013934 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013935 return NULL;
13936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013937 int _start_lineno = p->tokens[_mark]->lineno;
13938 UNUSED(_start_lineno); // Only used by EXTRA macro
13939 int _start_col_offset = p->tokens[_mark]->col_offset;
13940 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013941 { // t_primary '.' NAME &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013942 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013943 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013944 return NULL;
13945 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013946 D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013947 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013948 expr_ty a;
13949 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013950 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013951 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013952 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013953 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013955 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013956 &&
13957 _PyPegen_lookahead(1, t_lookahead_rule, p)
13958 )
13959 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013960 D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013961 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13962 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013963 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013964 return NULL;
13965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013966 int _end_lineno = _token->end_lineno;
13967 UNUSED(_end_lineno); // Only used by EXTRA macro
13968 int _end_col_offset = _token->end_col_offset;
13969 UNUSED(_end_col_offset); // Only used by EXTRA macro
13970 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
13971 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013972 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013973 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013974 return NULL;
13975 }
13976 goto done;
13977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013978 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013979 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
13980 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013981 }
13982 { // t_primary '[' slices ']' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013983 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013984 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013985 return NULL;
13986 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013987 D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013988 Token * _literal;
13989 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013990 expr_ty a;
13991 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013992 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013993 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013994 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013995 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013996 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013997 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013998 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013999 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014000 &&
14001 _PyPegen_lookahead(1, t_lookahead_rule, p)
14002 )
14003 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014004 D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014005 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14006 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014007 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014008 return NULL;
14009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014010 int _end_lineno = _token->end_lineno;
14011 UNUSED(_end_lineno); // Only used by EXTRA macro
14012 int _end_col_offset = _token->end_col_offset;
14013 UNUSED(_end_col_offset); // Only used by EXTRA macro
14014 _res = _Py_Subscript ( a , b , Load , EXTRA );
14015 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014016 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014017 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014018 return NULL;
14019 }
14020 goto done;
14021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014022 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014023 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
14024 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014025 }
14026 { // t_primary genexp &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014027 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014028 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014029 return NULL;
14030 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014031 D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014032 expr_ty a;
14033 expr_ty b;
14034 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014035 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014036 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014037 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014038 &&
14039 _PyPegen_lookahead(1, t_lookahead_rule, p)
14040 )
14041 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014042 D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014043 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14044 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014045 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014046 return NULL;
14047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014048 int _end_lineno = _token->end_lineno;
14049 UNUSED(_end_lineno); // Only used by EXTRA macro
14050 int _end_col_offset = _token->end_col_offset;
14051 UNUSED(_end_col_offset); // Only used by EXTRA macro
14052 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014054 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014055 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014056 return NULL;
14057 }
14058 goto done;
14059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014060 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014061 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
14062 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014063 }
14064 { // t_primary '(' arguments? ')' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014065 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014066 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014067 return NULL;
14068 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014069 D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014070 Token * _literal;
14071 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014072 expr_ty a;
14073 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014074 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014075 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014076 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014077 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014078 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014079 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014080 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014081 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014082 &&
14083 _PyPegen_lookahead(1, t_lookahead_rule, p)
14084 )
14085 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014086 D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014087 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14088 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014089 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014090 return NULL;
14091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014092 int _end_lineno = _token->end_lineno;
14093 UNUSED(_end_lineno); // Only used by EXTRA macro
14094 int _end_col_offset = _token->end_col_offset;
14095 UNUSED(_end_col_offset); // Only used by EXTRA macro
14096 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14097 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014098 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014099 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014100 return NULL;
14101 }
14102 goto done;
14103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014104 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014105 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
14106 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014107 }
14108 { // atom &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014109 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014110 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014111 return NULL;
14112 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014113 D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014114 expr_ty a;
14115 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014116 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014117 &&
14118 _PyPegen_lookahead(1, t_lookahead_rule, p)
14119 )
14120 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014121 D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014122 _res = a;
14123 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014124 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014125 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014126 return NULL;
14127 }
14128 goto done;
14129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014130 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014131 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
14132 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014134 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014135 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014136 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014137 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014138}
14139
14140// t_lookahead: '(' | '[' | '.'
14141static void *
14142t_lookahead_rule(Parser *p)
14143{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014144 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014145 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014146 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014147 return NULL;
14148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014149 void * _res = NULL;
14150 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014151 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014152 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014153 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014154 return NULL;
14155 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014156 D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014157 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014158 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014159 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014160 )
14161 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014162 D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014163 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014164 goto done;
14165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014166 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014167 D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
14168 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014169 }
14170 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014171 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014172 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014173 return NULL;
14174 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014175 D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014176 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014177 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014178 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014179 )
14180 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014181 D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014182 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014183 goto done;
14184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014185 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014186 D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
14187 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014188 }
14189 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014190 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014191 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014192 return NULL;
14193 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014194 D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014195 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014196 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014197 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014198 )
14199 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014200 D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014201 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014202 goto done;
14203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014204 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014205 D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
14206 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014208 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014209 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014210 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014211 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014212}
14213
14214// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
14215static expr_ty
14216t_atom_rule(Parser *p)
14217{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014218 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014219 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014220 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014221 return NULL;
14222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014223 expr_ty _res = NULL;
14224 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014225 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14226 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014227 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014228 return NULL;
14229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014230 int _start_lineno = p->tokens[_mark]->lineno;
14231 UNUSED(_start_lineno); // Only used by EXTRA macro
14232 int _start_col_offset = p->tokens[_mark]->col_offset;
14233 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014234 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014235 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014236 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014237 return NULL;
14238 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014239 D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014240 expr_ty a;
14241 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014242 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014243 )
14244 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014245 D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014246 _res = _PyPegen_set_expr_context ( p , a , Store );
14247 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014248 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014249 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014250 return NULL;
14251 }
14252 goto done;
14253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014254 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014255 D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ',
14256 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014257 }
14258 { // '(' target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014259 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014260 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014261 return NULL;
14262 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014263 D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014264 Token * _literal;
14265 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014266 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014267 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014268 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014269 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014270 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014271 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014272 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014273 )
14274 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014275 D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014276 _res = _PyPegen_set_expr_context ( p , a , Store );
14277 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014278 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014279 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014280 return NULL;
14281 }
14282 goto done;
14283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014284 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014285 D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ',
14286 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014287 }
14288 { // '(' targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014289 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014290 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014291 return NULL;
14292 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014293 D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014294 Token * _literal;
14295 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014296 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014297 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014298 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014299 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014300 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014301 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014302 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014303 )
14304 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014305 D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014306 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14307 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014308 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014309 return NULL;
14310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014311 int _end_lineno = _token->end_lineno;
14312 UNUSED(_end_lineno); // Only used by EXTRA macro
14313 int _end_col_offset = _token->end_col_offset;
14314 UNUSED(_end_col_offset); // Only used by EXTRA macro
14315 _res = _Py_Tuple ( b , Store , EXTRA );
14316 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014317 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014318 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014319 return NULL;
14320 }
14321 goto done;
14322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014323 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014324 D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ',
14325 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' targets? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014326 }
14327 { // '[' targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014328 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014329 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014330 return NULL;
14331 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014332 D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014333 Token * _literal;
14334 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014335 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014336 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014337 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014338 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014339 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014340 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014341 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014342 )
14343 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014344 D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014345 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14346 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014347 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014348 return NULL;
14349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014350 int _end_lineno = _token->end_lineno;
14351 UNUSED(_end_lineno); // Only used by EXTRA macro
14352 int _end_col_offset = _token->end_col_offset;
14353 UNUSED(_end_col_offset); // Only used by EXTRA macro
14354 _res = _Py_List ( b , Store , EXTRA );
14355 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014356 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014357 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014358 return NULL;
14359 }
14360 goto done;
14361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014362 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014363 D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ',
14364 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' targets? ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014366 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014367 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014368 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014369 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014370}
14371
14372// incorrect_arguments:
14373// | args ',' '*'
14374// | expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014375// | args for_if_clauses
14376// | args ',' expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014377// | args ',' args
14378static void *
14379incorrect_arguments_rule(Parser *p)
14380{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014381 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014382 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014383 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014384 return NULL;
14385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014386 void * _res = NULL;
14387 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014388 { // args ',' '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014389 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014390 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014391 return NULL;
14392 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014393 D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014394 Token * _literal;
14395 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014396 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014397 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014398 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014399 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014400 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014401 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014402 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014403 )
14404 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014405 D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014406 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
14407 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014408 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014409 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014410 return NULL;
14411 }
14412 goto done;
14413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014414 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014415 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14416 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' '*'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014417 }
14418 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014419 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014420 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014421 return NULL;
14422 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014423 D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014424 Token * _literal;
14425 void *_opt_var;
14426 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014427 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014428 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014429 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014430 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014431 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014432 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014433 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014434 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014435 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014436 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014437 )
14438 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014439 D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014440 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014441 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014442 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014443 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014444 return NULL;
14445 }
14446 goto done;
14447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014448 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014449 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14450 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014451 }
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014452 { // args for_if_clauses
14453 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014454 D(p->level--);
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014455 return NULL;
14456 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014457 D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014458 expr_ty a;
14459 asdl_seq* for_if_clauses_var;
14460 if (
14461 (a = args_rule(p)) // args
14462 &&
14463 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
14464 )
14465 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014466 D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014467 _res = _PyPegen_nonparen_genexp_in_call ( p , a );
14468 if (_res == NULL && PyErr_Occurred()) {
14469 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014470 D(p->level--);
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014471 return NULL;
14472 }
14473 goto done;
14474 }
14475 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014476 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14477 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014478 }
14479 { // args ',' expression for_if_clauses
14480 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014481 D(p->level--);
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014482 return NULL;
14483 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014484 D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014485 Token * _literal;
14486 expr_ty a;
14487 expr_ty args_var;
14488 asdl_seq* for_if_clauses_var;
14489 if (
14490 (args_var = args_rule(p)) // args
14491 &&
14492 (_literal = _PyPegen_expect_token(p, 12)) // token=','
14493 &&
14494 (a = expression_rule(p)) // expression
14495 &&
14496 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
14497 )
14498 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014499 D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014500 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
14501 if (_res == NULL && PyErr_Occurred()) {
14502 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014503 D(p->level--);
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014504 return NULL;
14505 }
14506 goto done;
14507 }
14508 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014509 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14510 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014511 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014512 { // args ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014513 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014514 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014515 return NULL;
14516 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014517 D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014518 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014519 expr_ty a;
14520 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014521 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014522 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014523 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014524 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014525 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014526 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014527 )
14528 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014529 D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014530 _res = _PyPegen_arguments_parsing_error ( p , a );
14531 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014532 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014533 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014534 return NULL;
14535 }
14536 goto done;
14537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014538 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014539 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14540 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014542 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014543 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014544 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014545 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014546}
14547
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014548// invalid_kwarg: expression '='
14549static void *
14550invalid_kwarg_rule(Parser *p)
14551{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014552 D(p->level++);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014553 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014554 D(p->level--);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014555 return NULL;
14556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014557 void * _res = NULL;
14558 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014559 { // expression '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014560 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014561 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014562 return NULL;
14563 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014564 D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression '='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014565 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014566 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014567 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014568 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014569 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014570 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014571 )
14572 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014573 D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression '='"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014574 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014575 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014576 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014577 D(p->level--);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014578 return NULL;
14579 }
14580 goto done;
14581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014582 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014583 D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
14584 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression '='"));
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014586 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014587 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014588 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014589 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014590}
14591
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014592// invalid_named_expression: expression ':=' expression
14593static void *
14594invalid_named_expression_rule(Parser *p)
14595{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014596 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014597 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014598 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014599 return NULL;
14600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014601 void * _res = NULL;
14602 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014603 { // expression ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014604 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014605 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014606 return NULL;
14607 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014608 D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014609 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014610 expr_ty a;
14611 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014612 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014613 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014614 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014615 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014616 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014617 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014618 )
14619 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014620 D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014621 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014623 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014624 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014625 return NULL;
14626 }
14627 goto done;
14628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014629 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014630 D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
14631 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014633 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014634 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014635 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014636 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014637}
14638
14639// invalid_assignment:
14640// | list ':'
14641// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014642// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014643// | expression ':' expression ['=' annotated_rhs]
Pablo Galindo9f495902020-06-08 02:57:00 +010014644// | ((star_targets '='))* star_expressions '='
14645// | ((star_targets '='))* yield_expr '='
Pablo Galindo16ab0702020-05-15 02:04:52 +010014646// | star_expressions augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014647static void *
14648invalid_assignment_rule(Parser *p)
14649{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014650 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014651 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014652 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014653 return NULL;
14654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014655 void * _res = NULL;
14656 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014657 { // list ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014658 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014659 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014660 return NULL;
14661 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014662 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list ':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014663 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014664 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014665 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014666 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014667 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014668 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014669 )
14670 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014671 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list ':'"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014672 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014673 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014674 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014675 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014676 return NULL;
14677 }
14678 goto done;
14679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014680 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014681 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14682 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list ':'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014683 }
14684 { // tuple ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014685 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014686 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014687 return NULL;
14688 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014689 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple ':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014690 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014691 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014692 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014693 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014694 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014695 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014696 )
14697 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014698 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple ':'"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014699 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
14700 if (_res == NULL && PyErr_Occurred()) {
14701 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014702 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014703 return NULL;
14704 }
14705 goto done;
14706 }
14707 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014708 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14709 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple ':'"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014710 }
14711 { // star_named_expression ',' star_named_expressions* ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014712 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014713 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014714 return NULL;
14715 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014716 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':'"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014717 Token * _literal;
14718 Token * _literal_1;
14719 asdl_seq * _loop0_126_var;
14720 expr_ty a;
14721 if (
14722 (a = star_named_expression_rule(p)) // star_named_expression
14723 &&
14724 (_literal = _PyPegen_expect_token(p, 12)) // token=','
14725 &&
14726 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
14727 &&
14728 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
14729 )
14730 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014731 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':'"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014732 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014733 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014734 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014735 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014736 return NULL;
14737 }
14738 goto done;
14739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014740 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014741 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14742 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014743 }
14744 { // expression ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014745 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014746 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014747 return NULL;
14748 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014749 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression ['=' annotated_rhs]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014750 Token * _literal;
14751 void *_opt_var;
14752 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014753 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014754 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014755 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014756 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014757 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014758 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014759 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014760 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014761 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014762 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014763 )
14764 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014765 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression ['=' annotated_rhs]"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014766 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014767 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014768 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014769 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014770 return NULL;
14771 }
14772 goto done;
14773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014774 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014775 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14776 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression ['=' annotated_rhs]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014777 }
Pablo Galindo9f495902020-06-08 02:57:00 +010014778 { // ((star_targets '='))* star_expressions '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014779 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014780 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014781 return NULL;
14782 }
Pablo Galindo9f495902020-06-08 02:57:00 +010014783 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
Pablo Galindo16ab0702020-05-15 02:04:52 +010014784 Token * _literal;
Pablo Galindo9f495902020-06-08 02:57:00 +010014785 asdl_seq * _loop0_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014786 expr_ty a;
14787 if (
Pablo Galindo9f495902020-06-08 02:57:00 +010014788 (_loop0_128_var = _loop0_128_rule(p)) // ((star_targets '='))*
14789 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010014790 (a = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014791 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010014792 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindo16ab0702020-05-15 02:04:52 +010014793 )
14794 {
Pablo Galindo9f495902020-06-08 02:57:00 +010014795 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
Pablo Galindo16ab0702020-05-15 02:04:52 +010014796 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( _PyPegen_get_invalid_target ( a ) , "cannot assign to %s" , _PyPegen_get_expr_name ( _PyPegen_get_invalid_target ( a ) ) );
14797 if (_res == NULL && PyErr_Occurred()) {
14798 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014799 D(p->level--);
Pablo Galindo16ab0702020-05-15 02:04:52 +010014800 return NULL;
14801 }
14802 goto done;
14803 }
14804 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014805 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +010014806 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
14807 }
14808 { // ((star_targets '='))* yield_expr '='
14809 if (p->error_indicator) {
14810 D(p->level--);
14811 return NULL;
14812 }
14813 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
14814 Token * _literal;
14815 asdl_seq * _loop0_129_var;
14816 expr_ty a;
14817 if (
14818 (_loop0_129_var = _loop0_129_rule(p)) // ((star_targets '='))*
14819 &&
14820 (a = yield_expr_rule(p)) // yield_expr
14821 &&
14822 (_literal = _PyPegen_expect_token(p, 22)) // token='='
14823 )
14824 {
14825 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
14826 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
14827 if (_res == NULL && PyErr_Occurred()) {
14828 p->error_indicator = 1;
14829 D(p->level--);
14830 return NULL;
14831 }
14832 goto done;
14833 }
14834 p->mark = _mark;
14835 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14836 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
Pablo Galindo16ab0702020-05-15 02:04:52 +010014837 }
14838 { // star_expressions augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014839 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014840 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014841 return NULL;
14842 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014843 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
Pablo Galindo9f495902020-06-08 02:57:00 +010014844 void *_tmp_130_var;
Pablo Galindo16ab0702020-05-15 02:04:52 +010014845 expr_ty a;
14846 AugOperator* augassign_var;
14847 if (
14848 (a = star_expressions_rule(p)) // star_expressions
14849 &&
14850 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010014851 &&
Pablo Galindo9f495902020-06-08 02:57:00 +010014852 (_tmp_130_var = _tmp_130_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014853 )
14854 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014855 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
Pablo Galindo16ab0702020-05-15 02:04:52 +010014856 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014857 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014858 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014859 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014860 return NULL;
14861 }
14862 goto done;
14863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014864 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014865 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14866 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014868 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014869 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014870 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014871 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014872}
14873
14874// invalid_block: NEWLINE !INDENT
14875static void *
14876invalid_block_rule(Parser *p)
14877{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014878 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014879 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014880 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014881 return NULL;
14882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014883 void * _res = NULL;
14884 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014885 { // NEWLINE !INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014886 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014887 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014888 return NULL;
14889 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014890 D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010014891 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014892 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014893 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014894 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014895 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014896 )
14897 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014898 D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014899 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
14900 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014901 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014902 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014903 return NULL;
14904 }
14905 goto done;
14906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014907 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014908 D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
14909 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014911 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014912 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014913 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014914 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014915}
14916
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014917// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014918static void *
14919invalid_comprehension_rule(Parser *p)
14920{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014921 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014922 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014923 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014924 return NULL;
14925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014926 void * _res = NULL;
14927 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014928 { // ('[' | '(' | '{') starred_expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014929 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014930 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014931 return NULL;
14932 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014933 D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
Pablo Galindo9f495902020-06-08 02:57:00 +010014934 void *_tmp_131_var;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014935 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014936 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014937 if (
Pablo Galindo9f495902020-06-08 02:57:00 +010014938 (_tmp_131_var = _tmp_131_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014939 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014940 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014942 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014943 )
14944 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014945 D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014946 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014947 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014948 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014949 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014950 return NULL;
14951 }
14952 goto done;
14953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014954 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014955 D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
14956 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014958 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014959 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014960 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014961 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014962}
14963
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014964// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
14965static void *
14966invalid_dict_comprehension_rule(Parser *p)
14967{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014968 D(p->level++);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014969 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014970 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014971 return NULL;
14972 }
14973 void * _res = NULL;
14974 int _mark = p->mark;
14975 { // '{' '**' bitwise_or for_if_clauses '}'
14976 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014977 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014978 return NULL;
14979 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014980 D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014981 Token * _literal;
14982 Token * _literal_1;
14983 Token * a;
14984 expr_ty bitwise_or_var;
14985 asdl_seq* for_if_clauses_var;
14986 if (
14987 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
14988 &&
14989 (a = _PyPegen_expect_token(p, 35)) // token='**'
14990 &&
14991 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
14992 &&
14993 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
14994 &&
14995 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
14996 )
14997 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014998 D(fprintf(stderr, "%*c+ invalid_dict_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014999 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
15000 if (_res == NULL && PyErr_Occurred()) {
15001 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015002 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030015003 return NULL;
15004 }
15005 goto done;
15006 }
15007 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015008 D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
15009 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030015010 }
15011 _res = NULL;
15012 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015013 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030015014 return _res;
15015}
15016
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015017// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070015018// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015019static void *
15020invalid_parameters_rule(Parser *p)
15021{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015022 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015023 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015024 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015025 return NULL;
15026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015027 void * _res = NULL;
15028 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015029 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015030 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015031 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015032 return NULL;
15033 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015034 D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* (slash_with_default | param_with_default+) param_no_default"));
Pablo Galindo9f495902020-06-08 02:57:00 +010015035 asdl_seq * _loop0_132_var;
15036 void *_tmp_133_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015037 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015038 if (
Pablo Galindo9f495902020-06-08 02:57:00 +010015039 (_loop0_132_var = _loop0_132_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015040 &&
Pablo Galindo9f495902020-06-08 02:57:00 +010015041 (_tmp_133_var = _tmp_133_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015042 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015043 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015044 )
15045 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015046 D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* (slash_with_default | param_with_default+) param_no_default"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015047 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
15048 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015049 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015050 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015051 return NULL;
15052 }
15053 goto done;
15054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015055 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015056 D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15057 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* (slash_with_default | param_with_default+) param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015059 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015060 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015061 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015062 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015063}
15064
Pablo Galindoc6483c92020-06-10 14:07:06 +010015065// invalid_lambda_parameters:
15066// | lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default
15067static void *
15068invalid_lambda_parameters_rule(Parser *p)
15069{
15070 D(p->level++);
15071 if (p->error_indicator) {
15072 D(p->level--);
15073 return NULL;
15074 }
15075 void * _res = NULL;
15076 int _mark = p->mark;
15077 { // lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default
15078 if (p->error_indicator) {
15079 D(p->level--);
15080 return NULL;
15081 }
15082 D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default"));
15083 asdl_seq * _loop0_134_var;
15084 void *_tmp_135_var;
15085 arg_ty lambda_param_no_default_var;
15086 if (
15087 (_loop0_134_var = _loop0_134_rule(p)) // lambda_param_no_default*
15088 &&
15089 (_tmp_135_var = _tmp_135_rule(p)) // lambda_slash_with_default | lambda_param_with_default+
15090 &&
15091 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
15092 )
15093 {
15094 D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default"));
15095 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
15096 if (_res == NULL && PyErr_Occurred()) {
15097 p->error_indicator = 1;
15098 D(p->level--);
15099 return NULL;
15100 }
15101 goto done;
15102 }
15103 p->mark = _mark;
15104 D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15105 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default"));
15106 }
15107 _res = NULL;
15108 done:
15109 D(p->level--);
15110 return _res;
15111}
15112
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015113// invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015114static void *
15115invalid_star_etc_rule(Parser *p)
15116{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015117 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015118 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015119 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015120 return NULL;
15121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015122 void * _res = NULL;
15123 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015124 { // '*' (')' | ',' (')' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015125 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015126 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015127 return NULL;
15128 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015129 D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015130 Token * _literal;
Pablo Galindoc6483c92020-06-10 14:07:06 +010015131 void *_tmp_136_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015132 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015133 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015134 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +010015135 (_tmp_136_var = _tmp_136_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015136 )
15137 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015138 D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015139 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
15140 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015141 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015142 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015143 return NULL;
15144 }
15145 goto done;
15146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015147 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015148 D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15149 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015150 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015151 { // '*' ',' TYPE_COMMENT
Pablo Galindoced4e5c2020-05-18 22:47:51 +010015152 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015153 D(p->level--);
Pablo Galindoced4e5c2020-05-18 22:47:51 +010015154 return NULL;
15155 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015156 D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015157 Token * _literal;
15158 Token * _literal_1;
15159 Token * type_comment_var;
15160 if (
15161 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
15162 &&
15163 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
15164 &&
15165 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
15166 )
15167 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015168 D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015169 _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
15170 if (_res == NULL && PyErr_Occurred()) {
15171 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015172 D(p->level--);
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015173 return NULL;
15174 }
15175 goto done;
15176 }
15177 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015178 D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15179 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015181 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015182 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015183 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015184 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015185}
15186
15187// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
15188static void *
15189invalid_lambda_star_etc_rule(Parser *p)
15190{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015191 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015192 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015193 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015194 return NULL;
15195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015196 void * _res = NULL;
15197 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015198 { // '*' (':' | ',' (':' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015199 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015200 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015201 return NULL;
15202 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015203 D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015204 Token * _literal;
Pablo Galindoc6483c92020-06-10 14:07:06 +010015205 void *_tmp_137_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015206 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015207 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015208 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +010015209 (_tmp_137_var = _tmp_137_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015210 )
15211 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015212 D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015213 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
15214 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015215 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015216 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015217 return NULL;
15218 }
15219 goto done;
15220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015221 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015222 D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15223 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015225 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015226 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015227 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015228 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015229}
15230
Guido van Rossumc001c092020-04-30 12:12:19 -070015231// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
15232static void *
15233invalid_double_type_comments_rule(Parser *p)
15234{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015235 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015236 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015237 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015238 return NULL;
15239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015240 void * _res = NULL;
15241 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015242 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015243 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015244 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015245 return NULL;
15246 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015247 D(fprintf(stderr, "%*c> invalid_double_type_comments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010015248 Token * indent_var;
15249 Token * newline_var;
15250 Token * newline_var_1;
15251 Token * type_comment_var;
15252 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070015253 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015254 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070015255 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015256 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070015257 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015258 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070015259 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015260 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070015261 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015262 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070015263 )
15264 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015265 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"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015266 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
15267 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015268 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015269 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015270 return NULL;
15271 }
15272 goto done;
15273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015274 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015275 D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
15276 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015278 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015279 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015280 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015281 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015282}
15283
Shantanu27c0d9b2020-05-11 14:53:58 -070015284// invalid_del_target: star_expression &del_target_end
15285static void *
15286invalid_del_target_rule(Parser *p)
15287{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015288 D(p->level++);
Shantanu27c0d9b2020-05-11 14:53:58 -070015289 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015290 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070015291 return NULL;
15292 }
15293 void * _res = NULL;
15294 int _mark = p->mark;
15295 { // star_expression &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015296 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015297 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015298 return NULL;
15299 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015300 D(fprintf(stderr, "%*c> invalid_del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression &del_target_end"));
Shantanu27c0d9b2020-05-11 14:53:58 -070015301 expr_ty a;
15302 if (
15303 (a = star_expression_rule(p)) // star_expression
15304 &&
15305 _PyPegen_lookahead(1, del_target_end_rule, p)
15306 )
15307 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015308 D(fprintf(stderr, "%*c+ invalid_del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression &del_target_end"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015309 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070015310 if (_res == NULL && PyErr_Occurred()) {
15311 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015312 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070015313 return NULL;
15314 }
15315 goto done;
15316 }
15317 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015318 D(fprintf(stderr, "%*c%s invalid_del_target[%d-%d]: %s failed!\n", p->level, ' ',
15319 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression &del_target_end"));
Shantanu27c0d9b2020-05-11 14:53:58 -070015320 }
15321 _res = NULL;
15322 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015323 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070015324 return _res;
15325}
15326
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015327// invalid_import_from_targets: import_from_as_names ','
15328static void *
15329invalid_import_from_targets_rule(Parser *p)
15330{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015331 D(p->level++);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015332 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015333 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015334 return NULL;
15335 }
15336 void * _res = NULL;
15337 int _mark = p->mark;
15338 { // import_from_as_names ','
15339 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015340 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015341 return NULL;
15342 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015343 D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ','"));
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015344 Token * _literal;
15345 asdl_seq* import_from_as_names_var;
15346 if (
15347 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
15348 &&
15349 (_literal = _PyPegen_expect_token(p, 12)) // token=','
15350 )
15351 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015352 D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ','"));
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015353 _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
15354 if (_res == NULL && PyErr_Occurred()) {
15355 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015356 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015357 return NULL;
15358 }
15359 goto done;
15360 }
15361 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015362 D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
15363 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ','"));
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015364 }
15365 _res = NULL;
15366 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015367 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015368 return _res;
15369}
15370
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015371// _loop0_1: NEWLINE
15372static asdl_seq *
15373_loop0_1_rule(Parser *p)
15374{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015375 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015376 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015377 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015378 return NULL;
15379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015380 void *_res = NULL;
15381 int _mark = p->mark;
15382 int _start_mark = p->mark;
15383 void **_children = PyMem_Malloc(sizeof(void *));
15384 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015385 p->error_indicator = 1;
15386 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015387 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015388 return NULL;
15389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015390 ssize_t _children_capacity = 1;
15391 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015392 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015393 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015394 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015395 return NULL;
15396 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015397 D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010015398 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015399 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015400 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015401 )
15402 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015403 _res = newline_var;
15404 if (_n == _children_capacity) {
15405 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015406 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15407 if (!_new_children) {
15408 p->error_indicator = 1;
15409 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015410 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015411 return NULL;
15412 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015413 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015415 _children[_n++] = _res;
15416 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015418 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015419 D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
15420 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015422 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15423 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015424 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015425 p->error_indicator = 1;
15426 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015427 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015428 return NULL;
15429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015430 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15431 PyMem_Free(_children);
15432 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015433 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015434 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015435}
15436
Guido van Rossumc001c092020-04-30 12:12:19 -070015437// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015438static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070015439_loop0_2_rule(Parser *p)
15440{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015441 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015442 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015443 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015444 return NULL;
15445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015446 void *_res = NULL;
15447 int _mark = p->mark;
15448 int _start_mark = p->mark;
15449 void **_children = PyMem_Malloc(sizeof(void *));
15450 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015451 p->error_indicator = 1;
15452 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015453 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015454 return NULL;
15455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015456 ssize_t _children_capacity = 1;
15457 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015458 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015459 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015460 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015461 return NULL;
15462 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015463 D(fprintf(stderr, "%*c> _loop0_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010015464 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015465 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015466 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070015467 )
15468 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015469 _res = newline_var;
15470 if (_n == _children_capacity) {
15471 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015472 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15473 if (!_new_children) {
15474 p->error_indicator = 1;
15475 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015476 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015477 return NULL;
15478 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015479 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015481 _children[_n++] = _res;
15482 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015484 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015485 D(fprintf(stderr, "%*c%s _loop0_2[%d-%d]: %s failed!\n", p->level, ' ',
15486 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015488 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15489 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015490 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015491 p->error_indicator = 1;
15492 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015493 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015494 return NULL;
15495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015496 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15497 PyMem_Free(_children);
15498 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015499 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015500 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015501}
15502
15503// _loop0_4: ',' expression
15504static asdl_seq *
15505_loop0_4_rule(Parser *p)
15506{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015507 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015508 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015509 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015510 return NULL;
15511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015512 void *_res = NULL;
15513 int _mark = p->mark;
15514 int _start_mark = p->mark;
15515 void **_children = PyMem_Malloc(sizeof(void *));
15516 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015517 p->error_indicator = 1;
15518 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015519 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015520 return NULL;
15521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015522 ssize_t _children_capacity = 1;
15523 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015524 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015525 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015526 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015527 return NULL;
15528 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015529 D(fprintf(stderr, "%*c> _loop0_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015530 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015531 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015532 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015533 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015534 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015535 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015536 )
15537 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015538 _res = elem;
15539 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015540 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015541 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015542 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015543 return NULL;
15544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015545 if (_n == _children_capacity) {
15546 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015547 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15548 if (!_new_children) {
15549 p->error_indicator = 1;
15550 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015551 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015552 return NULL;
15553 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015554 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015556 _children[_n++] = _res;
15557 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015559 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015560 D(fprintf(stderr, "%*c%s _loop0_4[%d-%d]: %s failed!\n", p->level, ' ',
15561 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015563 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15564 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015565 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015566 p->error_indicator = 1;
15567 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015568 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015569 return NULL;
15570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015571 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15572 PyMem_Free(_children);
15573 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015574 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015575 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015576}
15577
15578// _gather_3: expression _loop0_4
15579static asdl_seq *
15580_gather_3_rule(Parser *p)
15581{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015582 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015583 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015584 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015585 return NULL;
15586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015587 asdl_seq * _res = NULL;
15588 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015589 { // expression _loop0_4
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015590 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015591 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015592 return NULL;
15593 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015594 D(fprintf(stderr, "%*c> _gather_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_4"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015595 expr_ty elem;
15596 asdl_seq * seq;
15597 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015598 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015599 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015600 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070015601 )
15602 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015603 D(fprintf(stderr, "%*c+ _gather_3[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_4"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015604 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015605 goto done;
15606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015607 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015608 D(fprintf(stderr, "%*c%s _gather_3[%d-%d]: %s failed!\n", p->level, ' ',
15609 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_4"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015611 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015612 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015613 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015614 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015615}
15616
15617// _loop0_6: ',' expression
15618static asdl_seq *
15619_loop0_6_rule(Parser *p)
15620{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015621 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015622 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015623 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015624 return NULL;
15625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015626 void *_res = NULL;
15627 int _mark = p->mark;
15628 int _start_mark = p->mark;
15629 void **_children = PyMem_Malloc(sizeof(void *));
15630 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015631 p->error_indicator = 1;
15632 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015633 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015634 return NULL;
15635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015636 ssize_t _children_capacity = 1;
15637 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015638 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015639 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015640 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015641 return NULL;
15642 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015643 D(fprintf(stderr, "%*c> _loop0_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015644 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015645 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015646 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015647 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015648 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015649 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015650 )
15651 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015652 _res = elem;
15653 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015654 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015655 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015656 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015657 return NULL;
15658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015659 if (_n == _children_capacity) {
15660 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015661 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15662 if (!_new_children) {
15663 p->error_indicator = 1;
15664 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015665 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015666 return NULL;
15667 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015668 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015670 _children[_n++] = _res;
15671 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015673 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015674 D(fprintf(stderr, "%*c%s _loop0_6[%d-%d]: %s failed!\n", p->level, ' ',
15675 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015677 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15678 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015679 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015680 p->error_indicator = 1;
15681 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015682 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015683 return NULL;
15684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015685 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15686 PyMem_Free(_children);
15687 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015688 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015689 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015690}
15691
15692// _gather_5: expression _loop0_6
15693static asdl_seq *
15694_gather_5_rule(Parser *p)
15695{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015696 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015697 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015698 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015699 return NULL;
15700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015701 asdl_seq * _res = NULL;
15702 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015703 { // expression _loop0_6
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015704 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015705 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015706 return NULL;
15707 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015708 D(fprintf(stderr, "%*c> _gather_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_6"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015709 expr_ty elem;
15710 asdl_seq * seq;
15711 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015712 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015713 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015714 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070015715 )
15716 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015717 D(fprintf(stderr, "%*c+ _gather_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_6"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015718 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015719 goto done;
15720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015721 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015722 D(fprintf(stderr, "%*c%s _gather_5[%d-%d]: %s failed!\n", p->level, ' ',
15723 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_6"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015725 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015726 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015727 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015728 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015729}
15730
15731// _loop0_8: ',' expression
15732static asdl_seq *
15733_loop0_8_rule(Parser *p)
15734{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015735 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015736 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015737 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015738 return NULL;
15739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015740 void *_res = NULL;
15741 int _mark = p->mark;
15742 int _start_mark = p->mark;
15743 void **_children = PyMem_Malloc(sizeof(void *));
15744 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015745 p->error_indicator = 1;
15746 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015747 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015748 return NULL;
15749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015750 ssize_t _children_capacity = 1;
15751 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015752 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015753 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015754 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015755 return NULL;
15756 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015757 D(fprintf(stderr, "%*c> _loop0_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015758 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015759 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015760 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015761 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015762 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015763 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015764 )
15765 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015766 _res = elem;
15767 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015768 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015769 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015770 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015771 return NULL;
15772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015773 if (_n == _children_capacity) {
15774 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015775 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15776 if (!_new_children) {
15777 p->error_indicator = 1;
15778 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015779 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015780 return NULL;
15781 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015782 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015784 _children[_n++] = _res;
15785 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015787 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015788 D(fprintf(stderr, "%*c%s _loop0_8[%d-%d]: %s failed!\n", p->level, ' ',
15789 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015791 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15792 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015793 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015794 p->error_indicator = 1;
15795 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015796 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015797 return NULL;
15798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015799 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15800 PyMem_Free(_children);
15801 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015802 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015803 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015804}
15805
15806// _gather_7: expression _loop0_8
15807static asdl_seq *
15808_gather_7_rule(Parser *p)
15809{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015810 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015811 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015812 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015813 return NULL;
15814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015815 asdl_seq * _res = NULL;
15816 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015817 { // expression _loop0_8
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015818 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015819 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015820 return NULL;
15821 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015822 D(fprintf(stderr, "%*c> _gather_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_8"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015823 expr_ty elem;
15824 asdl_seq * seq;
15825 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015826 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015827 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015828 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070015829 )
15830 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015831 D(fprintf(stderr, "%*c+ _gather_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_8"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015832 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015833 goto done;
15834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015835 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015836 D(fprintf(stderr, "%*c%s _gather_7[%d-%d]: %s failed!\n", p->level, ' ',
15837 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_8"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015839 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015840 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015841 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015842 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015843}
15844
15845// _loop0_10: ',' expression
15846static asdl_seq *
15847_loop0_10_rule(Parser *p)
15848{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015849 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015850 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015851 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015852 return NULL;
15853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015854 void *_res = NULL;
15855 int _mark = p->mark;
15856 int _start_mark = p->mark;
15857 void **_children = PyMem_Malloc(sizeof(void *));
15858 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015859 p->error_indicator = 1;
15860 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015861 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015862 return NULL;
15863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015864 ssize_t _children_capacity = 1;
15865 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015866 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015867 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015868 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015869 return NULL;
15870 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015871 D(fprintf(stderr, "%*c> _loop0_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015872 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015873 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015874 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015875 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015877 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015878 )
15879 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015880 _res = elem;
15881 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015882 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015883 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015884 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015885 return NULL;
15886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015887 if (_n == _children_capacity) {
15888 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015889 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15890 if (!_new_children) {
15891 p->error_indicator = 1;
15892 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015893 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015894 return NULL;
15895 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015896 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015898 _children[_n++] = _res;
15899 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015901 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015902 D(fprintf(stderr, "%*c%s _loop0_10[%d-%d]: %s failed!\n", p->level, ' ',
15903 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015905 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15906 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015907 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015908 p->error_indicator = 1;
15909 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015910 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015911 return NULL;
15912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015913 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15914 PyMem_Free(_children);
15915 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015916 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015917 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015918}
15919
15920// _gather_9: expression _loop0_10
15921static asdl_seq *
15922_gather_9_rule(Parser *p)
15923{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015924 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015925 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015926 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015927 return NULL;
15928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015929 asdl_seq * _res = NULL;
15930 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015931 { // expression _loop0_10
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015932 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015933 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015934 return NULL;
15935 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015936 D(fprintf(stderr, "%*c> _gather_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_10"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015937 expr_ty elem;
15938 asdl_seq * seq;
15939 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015940 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015942 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070015943 )
15944 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015945 D(fprintf(stderr, "%*c+ _gather_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_10"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015946 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015947 goto done;
15948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015949 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015950 D(fprintf(stderr, "%*c%s _gather_9[%d-%d]: %s failed!\n", p->level, ' ',
15951 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_10"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015953 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015954 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015955 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015956 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015957}
15958
15959// _loop1_11: statement
15960static asdl_seq *
15961_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015962{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015963 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015964 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015965 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015966 return NULL;
15967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015968 void *_res = NULL;
15969 int _mark = p->mark;
15970 int _start_mark = p->mark;
15971 void **_children = PyMem_Malloc(sizeof(void *));
15972 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015973 p->error_indicator = 1;
15974 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015975 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015976 return NULL;
15977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015978 ssize_t _children_capacity = 1;
15979 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015980 { // statement
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015981 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015982 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015983 return NULL;
15984 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015985 D(fprintf(stderr, "%*c> _loop1_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015986 asdl_seq* statement_var;
15987 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015988 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015989 )
15990 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015991 _res = statement_var;
15992 if (_n == _children_capacity) {
15993 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015994 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15995 if (!_new_children) {
15996 p->error_indicator = 1;
15997 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015998 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015999 return NULL;
16000 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016001 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016003 _children[_n++] = _res;
16004 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016006 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016007 D(fprintf(stderr, "%*c%s _loop1_11[%d-%d]: %s failed!\n", p->level, ' ',
16008 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016010 if (_n == 0 || p->error_indicator) {
16011 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016012 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016013 return NULL;
16014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016015 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16016 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016017 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016018 p->error_indicator = 1;
16019 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016020 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016021 return NULL;
16022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016023 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16024 PyMem_Free(_children);
16025 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016026 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016027 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016028}
16029
Guido van Rossumc001c092020-04-30 12:12:19 -070016030// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016031static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070016032_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016033{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016034 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016035 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016036 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016037 return NULL;
16038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016039 void *_res = NULL;
16040 int _mark = p->mark;
16041 int _start_mark = p->mark;
16042 void **_children = PyMem_Malloc(sizeof(void *));
16043 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016044 p->error_indicator = 1;
16045 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016046 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016047 return NULL;
16048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016049 ssize_t _children_capacity = 1;
16050 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016051 { // ';' small_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016052 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016053 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016054 return NULL;
16055 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016056 D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' small_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016057 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016058 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016059 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016060 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016061 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016062 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016063 )
16064 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016065 _res = elem;
16066 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016067 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016068 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016069 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016070 return NULL;
16071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016072 if (_n == _children_capacity) {
16073 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016074 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16075 if (!_new_children) {
16076 p->error_indicator = 1;
16077 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016078 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016079 return NULL;
16080 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016081 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016083 _children[_n++] = _res;
16084 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016086 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016087 D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
16088 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' small_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016090 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16091 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016092 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016093 p->error_indicator = 1;
16094 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016095 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016096 return NULL;
16097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016098 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16099 PyMem_Free(_children);
16100 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016101 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016102 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016103}
16104
Guido van Rossumc001c092020-04-30 12:12:19 -070016105// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016106static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070016107_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016108{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016109 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016110 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016111 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016112 return NULL;
16113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016114 asdl_seq * _res = NULL;
16115 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016116 { // small_stmt _loop0_13
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016117 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016118 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016119 return NULL;
16120 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016121 D(fprintf(stderr, "%*c> _gather_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "small_stmt _loop0_13"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016122 stmt_ty elem;
16123 asdl_seq * seq;
16124 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016125 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016126 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016127 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016128 )
16129 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016130 D(fprintf(stderr, "%*c+ _gather_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "small_stmt _loop0_13"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016131 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016132 goto done;
16133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016134 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016135 D(fprintf(stderr, "%*c%s _gather_12[%d-%d]: %s failed!\n", p->level, ' ',
16136 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "small_stmt _loop0_13"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016138 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016139 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016140 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016141 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016142}
16143
Guido van Rossumc001c092020-04-30 12:12:19 -070016144// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016145static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016146_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016147{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016148 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016149 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016150 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016151 return NULL;
16152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016153 void * _res = NULL;
16154 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016155 { // 'import'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016156 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016157 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016158 return NULL;
16159 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016160 D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016161 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016162 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016163 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016164 )
16165 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016166 D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016167 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016168 goto done;
16169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016170 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016171 D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ',
16172 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016173 }
16174 { // 'from'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016175 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016176 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016177 return NULL;
16178 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016179 D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016180 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016181 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016182 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016183 )
16184 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016185 D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016186 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016187 goto done;
16188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016189 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016190 D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ',
16191 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016193 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016194 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016195 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016196 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016197}
16198
Guido van Rossumc001c092020-04-30 12:12:19 -070016199// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016200static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016201_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016202{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016203 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016204 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016205 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016206 return NULL;
16207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016208 void * _res = NULL;
16209 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016210 { // 'def'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016211 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016212 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016213 return NULL;
16214 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016215 D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016216 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016217 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016218 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016219 )
16220 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016221 D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016222 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016223 goto done;
16224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016225 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016226 D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
16227 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016228 }
16229 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016230 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016231 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016232 return NULL;
16233 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016234 D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016235 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016236 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016237 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016238 )
16239 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016240 D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016241 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016242 goto done;
16243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016244 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016245 D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
16246 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016247 }
16248 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016249 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016250 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016251 return NULL;
16252 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016253 D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010016254 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016255 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016256 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016257 )
16258 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016259 D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016260 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016261 goto done;
16262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016263 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016264 D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
16265 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016267 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016268 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016269 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016270 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016271}
16272
Guido van Rossumc001c092020-04-30 12:12:19 -070016273// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016274static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016275_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016276{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016277 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016278 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016279 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016280 return NULL;
16281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016282 void * _res = NULL;
16283 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016284 { // 'class'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016285 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016286 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016287 return NULL;
16288 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016289 D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016290 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016291 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016292 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016293 )
16294 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016295 D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016296 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016297 goto done;
16298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016299 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016300 D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
16301 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016302 }
16303 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016304 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016305 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016306 return NULL;
16307 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016308 D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016309 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016310 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016311 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016312 )
16313 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016314 D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016315 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016316 goto done;
16317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016318 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016319 D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
16320 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016322 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016323 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016324 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016325 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016326}
16327
Guido van Rossumc001c092020-04-30 12:12:19 -070016328// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016329static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016330_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016331{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016332 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016333 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016334 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016335 return NULL;
16336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016337 void * _res = NULL;
16338 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016339 { // 'with'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016340 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016341 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016342 return NULL;
16343 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016344 D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016345 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016346 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016347 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016348 )
16349 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016350 D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016351 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016352 goto done;
16353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016354 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016355 D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
16356 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016357 }
16358 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016359 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016360 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016361 return NULL;
16362 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016363 D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010016364 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016365 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016366 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016367 )
16368 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016369 D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016370 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016371 goto done;
16372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016373 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016374 D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
16375 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016377 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016378 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016379 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016380 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016381}
16382
Guido van Rossumc001c092020-04-30 12:12:19 -070016383// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016384static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016385_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016386{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016387 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016388 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016389 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016390 return NULL;
16391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016392 void * _res = NULL;
16393 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016394 { // 'for'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016395 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016396 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016397 return NULL;
16398 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016399 D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016400 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016401 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016402 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016403 )
16404 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016405 D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016406 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016407 goto done;
16408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016409 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016410 D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ',
16411 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016412 }
16413 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016414 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016415 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016416 return NULL;
16417 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016418 D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010016419 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016420 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016421 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016422 )
16423 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016424 D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016425 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016426 goto done;
16427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016428 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016429 D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ',
16430 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016432 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016433 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016434 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016435 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016436}
16437
Guido van Rossumc001c092020-04-30 12:12:19 -070016438// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016439static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016440_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016441{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016442 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016443 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016444 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016445 return NULL;
16446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016447 void * _res = NULL;
16448 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016449 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016450 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016451 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016452 return NULL;
16453 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016454 D(fprintf(stderr, "%*c> _tmp_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016455 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016456 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016457 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016458 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016459 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016460 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016461 )
16462 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016463 D(fprintf(stderr, "%*c+ _tmp_19[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016464 _res = d;
16465 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016466 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016467 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016468 return NULL;
16469 }
16470 goto done;
16471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016472 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016473 D(fprintf(stderr, "%*c%s _tmp_19[%d-%d]: %s failed!\n", p->level, ' ',
16474 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016476 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016477 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016478 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016479 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016480}
16481
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016482// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016483static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016484_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016485{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016486 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016487 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016488 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016489 return NULL;
16490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016491 void * _res = NULL;
16492 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016493 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016494 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016495 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016496 return NULL;
16497 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016498 D(fprintf(stderr, "%*c> _tmp_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016499 Token * _literal;
16500 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016501 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016502 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016503 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016504 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016505 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016506 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016507 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016508 )
16509 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016510 D(fprintf(stderr, "%*c+ _tmp_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016511 _res = b;
16512 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016513 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016514 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016515 return NULL;
16516 }
16517 goto done;
16518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016519 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016520 D(fprintf(stderr, "%*c%s _tmp_20[%d-%d]: %s failed!\n", p->level, ' ',
16521 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016522 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016523 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016524 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016525 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016526 return NULL;
16527 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016528 D(fprintf(stderr, "%*c> _tmp_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016529 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016530 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016531 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016532 )
16533 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016534 D(fprintf(stderr, "%*c+ _tmp_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016535 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016536 goto done;
16537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016538 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016539 D(fprintf(stderr, "%*c%s _tmp_20[%d-%d]: %s failed!\n", p->level, ' ',
16540 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016542 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016543 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016544 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016545 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016546}
16547
Guido van Rossumc001c092020-04-30 12:12:19 -070016548// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016549static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016550_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016551{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016552 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016553 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016554 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016555 return NULL;
16556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016557 void * _res = NULL;
16558 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016559 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016560 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016561 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016562 return NULL;
16563 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016564 D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016565 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016566 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016567 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016568 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016569 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016570 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016571 )
16572 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016573 D(fprintf(stderr, "%*c+ _tmp_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016574 _res = d;
16575 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016576 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016577 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016578 return NULL;
16579 }
16580 goto done;
16581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016582 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016583 D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
16584 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016586 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016587 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016588 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016589 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016590}
16591
Guido van Rossumc001c092020-04-30 12:12:19 -070016592// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016593static asdl_seq *
16594_loop1_22_rule(Parser *p)
16595{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016596 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016597 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016598 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016599 return NULL;
16600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016601 void *_res = NULL;
16602 int _mark = p->mark;
16603 int _start_mark = p->mark;
16604 void **_children = PyMem_Malloc(sizeof(void *));
16605 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016606 p->error_indicator = 1;
16607 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016608 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016609 return NULL;
16610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016611 ssize_t _children_capacity = 1;
16612 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016613 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016614 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016615 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016616 return NULL;
16617 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016618 D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010016619 void *_tmp_138_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016620 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010016621 (_tmp_138_var = _tmp_138_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016622 )
16623 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010016624 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016625 if (_n == _children_capacity) {
16626 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016627 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16628 if (!_new_children) {
16629 p->error_indicator = 1;
16630 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016631 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016632 return NULL;
16633 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016634 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016636 _children[_n++] = _res;
16637 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016639 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016640 D(fprintf(stderr, "%*c%s _loop1_22[%d-%d]: %s failed!\n", p->level, ' ',
16641 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016643 if (_n == 0 || p->error_indicator) {
16644 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016645 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016646 return NULL;
16647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016648 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16649 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016650 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016651 p->error_indicator = 1;
16652 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016653 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016654 return NULL;
16655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016656 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16657 PyMem_Free(_children);
16658 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016659 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016660 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016661}
16662
Guido van Rossumc001c092020-04-30 12:12:19 -070016663// _tmp_23: yield_expr | star_expressions
16664static void *
16665_tmp_23_rule(Parser *p)
16666{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016667 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016668 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016669 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016670 return NULL;
16671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016672 void * _res = NULL;
16673 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016674 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016675 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016676 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016677 return NULL;
16678 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016679 D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016680 expr_ty yield_expr_var;
16681 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016682 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070016683 )
16684 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016685 D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016686 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070016687 goto done;
16688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016689 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016690 D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
16691 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016692 }
16693 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016694 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016695 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016696 return NULL;
16697 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016698 D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016699 expr_ty star_expressions_var;
16700 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016701 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070016702 )
16703 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016704 D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016705 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070016706 goto done;
16707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016708 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016709 D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
16710 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016712 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016713 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016714 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016715 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016716}
16717
16718// _tmp_24: yield_expr | star_expressions
16719static void *
16720_tmp_24_rule(Parser *p)
16721{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016722 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016723 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016724 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016725 return NULL;
16726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016727 void * _res = NULL;
16728 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016729 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016730 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016731 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016732 return NULL;
16733 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016734 D(fprintf(stderr, "%*c> _tmp_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016735 expr_ty yield_expr_var;
16736 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016737 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070016738 )
16739 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016740 D(fprintf(stderr, "%*c+ _tmp_24[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016741 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070016742 goto done;
16743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016744 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016745 D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ',
16746 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016747 }
16748 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016749 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016750 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016751 return NULL;
16752 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016753 D(fprintf(stderr, "%*c> _tmp_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016754 expr_ty star_expressions_var;
16755 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016756 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070016757 )
16758 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016759 D(fprintf(stderr, "%*c+ _tmp_24[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016760 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070016761 goto done;
16762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016763 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016764 D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ',
16765 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016767 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016768 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016769 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016770 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016771}
16772
16773// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016774static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070016775_loop0_26_rule(Parser *p)
16776{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016777 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016778 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016779 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016780 return NULL;
16781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016782 void *_res = NULL;
16783 int _mark = p->mark;
16784 int _start_mark = p->mark;
16785 void **_children = PyMem_Malloc(sizeof(void *));
16786 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016787 p->error_indicator = 1;
16788 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016789 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016790 return NULL;
16791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016792 ssize_t _children_capacity = 1;
16793 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016794 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016795 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016796 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016797 return NULL;
16798 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016799 D(fprintf(stderr, "%*c> _loop0_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016800 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016801 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016802 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016803 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016804 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016805 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070016806 )
16807 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016808 _res = elem;
16809 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016810 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016811 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016812 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016813 return NULL;
16814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016815 if (_n == _children_capacity) {
16816 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016817 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16818 if (!_new_children) {
16819 p->error_indicator = 1;
16820 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016821 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016822 return NULL;
16823 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016824 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070016825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016826 _children[_n++] = _res;
16827 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016829 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016830 D(fprintf(stderr, "%*c%s _loop0_26[%d-%d]: %s failed!\n", p->level, ' ',
16831 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016833 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16834 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016835 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016836 p->error_indicator = 1;
16837 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016838 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016839 return NULL;
16840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016841 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16842 PyMem_Free(_children);
16843 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016844 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016845 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016846}
16847
16848// _gather_25: NAME _loop0_26
16849static asdl_seq *
16850_gather_25_rule(Parser *p)
16851{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016852 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016853 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016854 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016855 return NULL;
16856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016857 asdl_seq * _res = NULL;
16858 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016859 { // NAME _loop0_26
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016860 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016861 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016862 return NULL;
16863 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016864 D(fprintf(stderr, "%*c> _gather_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_26"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016865 expr_ty elem;
16866 asdl_seq * seq;
16867 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016868 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070016869 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016870 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070016871 )
16872 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016873 D(fprintf(stderr, "%*c+ _gather_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_26"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016874 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016875 goto done;
16876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016877 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016878 D(fprintf(stderr, "%*c%s _gather_25[%d-%d]: %s failed!\n", p->level, ' ',
16879 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_26"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016881 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016882 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016883 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016884 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016885}
16886
16887// _loop0_28: ',' NAME
16888static asdl_seq *
16889_loop0_28_rule(Parser *p)
16890{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016891 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016892 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016893 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016894 return NULL;
16895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016896 void *_res = NULL;
16897 int _mark = p->mark;
16898 int _start_mark = p->mark;
16899 void **_children = PyMem_Malloc(sizeof(void *));
16900 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016901 p->error_indicator = 1;
16902 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016903 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016904 return NULL;
16905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016906 ssize_t _children_capacity = 1;
16907 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016908 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016909 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016910 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016911 return NULL;
16912 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016913 D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016914 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016915 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016916 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016917 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016918 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016919 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070016920 )
16921 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016922 _res = elem;
16923 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016924 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016925 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016926 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016927 return NULL;
16928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016929 if (_n == _children_capacity) {
16930 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016931 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16932 if (!_new_children) {
16933 p->error_indicator = 1;
16934 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016935 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016936 return NULL;
16937 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016938 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070016939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016940 _children[_n++] = _res;
16941 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016943 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016944 D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
16945 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016947 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16948 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016949 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016950 p->error_indicator = 1;
16951 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016952 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016953 return NULL;
16954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016955 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16956 PyMem_Free(_children);
16957 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016958 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016959 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016960}
16961
16962// _gather_27: NAME _loop0_28
16963static asdl_seq *
16964_gather_27_rule(Parser *p)
16965{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016966 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016967 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016968 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016969 return NULL;
16970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016971 asdl_seq * _res = NULL;
16972 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016973 { // NAME _loop0_28
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016974 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016975 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016976 return NULL;
16977 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016978 D(fprintf(stderr, "%*c> _gather_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_28"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016979 expr_ty elem;
16980 asdl_seq * seq;
16981 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016982 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070016983 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016984 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070016985 )
16986 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016987 D(fprintf(stderr, "%*c+ _gather_27[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_28"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016988 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016989 goto done;
16990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016991 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016992 D(fprintf(stderr, "%*c%s _gather_27[%d-%d]: %s failed!\n", p->level, ' ',
16993 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_28"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016995 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016996 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016997 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016998 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016999}
17000
17001// _tmp_29: ',' expression
17002static void *
17003_tmp_29_rule(Parser *p)
17004{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017005 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070017006 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017007 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017008 return NULL;
17009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017010 void * _res = NULL;
17011 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017012 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017013 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017014 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017015 return NULL;
17016 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017017 D(fprintf(stderr, "%*c> _tmp_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017018 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070017019 expr_ty z;
17020 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017021 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070017022 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017023 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070017024 )
17025 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017026 D(fprintf(stderr, "%*c+ _tmp_29[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017027 _res = z;
17028 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017029 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017030 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017031 return NULL;
17032 }
17033 goto done;
17034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017035 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017036 D(fprintf(stderr, "%*c%s _tmp_29[%d-%d]: %s failed!\n", p->level, ' ',
17037 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070017038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017039 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017040 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017041 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017042 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017043}
17044
17045// _loop0_30: ('.' | '...')
17046static asdl_seq *
17047_loop0_30_rule(Parser *p)
17048{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017049 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070017050 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017051 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017052 return NULL;
17053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017054 void *_res = NULL;
17055 int _mark = p->mark;
17056 int _start_mark = p->mark;
17057 void **_children = PyMem_Malloc(sizeof(void *));
17058 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017059 p->error_indicator = 1;
17060 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017061 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017062 return NULL;
17063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017064 ssize_t _children_capacity = 1;
17065 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017066 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017067 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017068 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017069 return NULL;
17070 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017071 D(fprintf(stderr, "%*c> _loop0_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010017072 void *_tmp_139_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070017073 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010017074 (_tmp_139_var = _tmp_139_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070017075 )
17076 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010017077 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017078 if (_n == _children_capacity) {
17079 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017080 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17081 if (!_new_children) {
17082 p->error_indicator = 1;
17083 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017084 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017085 return NULL;
17086 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017087 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017089 _children[_n++] = _res;
17090 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017092 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017093 D(fprintf(stderr, "%*c%s _loop0_30[%d-%d]: %s failed!\n", p->level, ' ',
17094 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
Guido van Rossumc001c092020-04-30 12:12:19 -070017095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017096 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17097 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017098 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017099 p->error_indicator = 1;
17100 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017101 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017102 return NULL;
17103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017104 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17105 PyMem_Free(_children);
17106 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017107 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017108 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017109}
17110
17111// _loop1_31: ('.' | '...')
17112static asdl_seq *
17113_loop1_31_rule(Parser *p)
17114{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017115 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070017116 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017117 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017118 return NULL;
17119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017120 void *_res = NULL;
17121 int _mark = p->mark;
17122 int _start_mark = p->mark;
17123 void **_children = PyMem_Malloc(sizeof(void *));
17124 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017125 p->error_indicator = 1;
17126 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017127 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017128 return NULL;
17129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017130 ssize_t _children_capacity = 1;
17131 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017132 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017133 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017134 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017135 return NULL;
17136 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017137 D(fprintf(stderr, "%*c> _loop1_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010017138 void *_tmp_140_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070017139 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010017140 (_tmp_140_var = _tmp_140_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070017141 )
17142 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010017143 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017144 if (_n == _children_capacity) {
17145 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017146 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17147 if (!_new_children) {
17148 p->error_indicator = 1;
17149 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017150 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017151 return NULL;
17152 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017153 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017155 _children[_n++] = _res;
17156 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017158 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017159 D(fprintf(stderr, "%*c%s _loop1_31[%d-%d]: %s failed!\n", p->level, ' ',
17160 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
Guido van Rossumc001c092020-04-30 12:12:19 -070017161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017162 if (_n == 0 || p->error_indicator) {
17163 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017164 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017165 return NULL;
17166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017167 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17168 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017169 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017170 p->error_indicator = 1;
17171 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017172 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017173 return NULL;
17174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017175 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17176 PyMem_Free(_children);
17177 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017178 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017179 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017180}
17181
17182// _loop0_33: ',' import_from_as_name
17183static asdl_seq *
17184_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017185{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017186 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017187 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017188 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017189 return NULL;
17190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017191 void *_res = NULL;
17192 int _mark = p->mark;
17193 int _start_mark = p->mark;
17194 void **_children = PyMem_Malloc(sizeof(void *));
17195 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017196 p->error_indicator = 1;
17197 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017198 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017199 return NULL;
17200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017201 ssize_t _children_capacity = 1;
17202 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017203 { // ',' import_from_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017204 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017205 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017206 return NULL;
17207 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017208 D(fprintf(stderr, "%*c> _loop0_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017209 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017210 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017211 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017212 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017213 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017214 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017215 )
17216 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017217 _res = elem;
17218 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017219 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017220 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017221 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017222 return NULL;
17223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017224 if (_n == _children_capacity) {
17225 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017226 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17227 if (!_new_children) {
17228 p->error_indicator = 1;
17229 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017230 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017231 return NULL;
17232 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017233 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017235 _children[_n++] = _res;
17236 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017238 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017239 D(fprintf(stderr, "%*c%s _loop0_33[%d-%d]: %s failed!\n", p->level, ' ',
17240 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017242 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17243 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017244 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017245 p->error_indicator = 1;
17246 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017247 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017248 return NULL;
17249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017250 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17251 PyMem_Free(_children);
17252 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017253 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017254 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017255}
17256
Guido van Rossumc001c092020-04-30 12:12:19 -070017257// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017258static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017259_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017260{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017261 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017262 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017263 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017264 return NULL;
17265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017266 asdl_seq * _res = NULL;
17267 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017268 { // import_from_as_name _loop0_33
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017269 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017270 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017271 return NULL;
17272 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017273 D(fprintf(stderr, "%*c> _gather_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_33"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017274 alias_ty elem;
17275 asdl_seq * seq;
17276 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017277 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017278 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017279 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017280 )
17281 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017282 D(fprintf(stderr, "%*c+ _gather_32[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_33"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017283 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017284 goto done;
17285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017286 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017287 D(fprintf(stderr, "%*c%s _gather_32[%d-%d]: %s failed!\n", p->level, ' ',
17288 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_33"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017290 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017291 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017292 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017293 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017294}
17295
Guido van Rossumc001c092020-04-30 12:12:19 -070017296// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017297static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070017298_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017299{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017300 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017301 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017302 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017303 return NULL;
17304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017305 void * _res = NULL;
17306 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017307 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017308 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017309 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017310 return NULL;
17311 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017312 D(fprintf(stderr, "%*c> _tmp_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017313 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017314 expr_ty z;
17315 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017316 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017318 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017319 )
17320 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017321 D(fprintf(stderr, "%*c+ _tmp_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017322 _res = z;
17323 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017324 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017325 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017326 return NULL;
17327 }
17328 goto done;
17329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017330 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017331 D(fprintf(stderr, "%*c%s _tmp_34[%d-%d]: %s failed!\n", p->level, ' ',
17332 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017334 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017335 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017336 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017337 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017338}
17339
Guido van Rossumc001c092020-04-30 12:12:19 -070017340// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017341static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017342_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017343{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017344 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017345 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017346 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017347 return NULL;
17348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017349 void *_res = NULL;
17350 int _mark = p->mark;
17351 int _start_mark = p->mark;
17352 void **_children = PyMem_Malloc(sizeof(void *));
17353 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017354 p->error_indicator = 1;
17355 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017356 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017357 return NULL;
17358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017359 ssize_t _children_capacity = 1;
17360 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017361 { // ',' dotted_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017362 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017363 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017364 return NULL;
17365 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017366 D(fprintf(stderr, "%*c> _loop0_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017367 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017368 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017369 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017370 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017371 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017372 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017373 )
17374 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017375 _res = elem;
17376 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017377 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017378 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017379 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017380 return NULL;
17381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017382 if (_n == _children_capacity) {
17383 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017384 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17385 if (!_new_children) {
17386 p->error_indicator = 1;
17387 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017388 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017389 return NULL;
17390 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017391 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017393 _children[_n++] = _res;
17394 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017396 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017397 D(fprintf(stderr, "%*c%s _loop0_36[%d-%d]: %s failed!\n", p->level, ' ',
17398 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017400 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17401 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017402 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017403 p->error_indicator = 1;
17404 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017405 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017406 return NULL;
17407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017408 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17409 PyMem_Free(_children);
17410 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017411 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017412 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017413}
17414
Guido van Rossumc001c092020-04-30 12:12:19 -070017415// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017416static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017417_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017418{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017419 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017420 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017421 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017422 return NULL;
17423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017424 asdl_seq * _res = NULL;
17425 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017426 { // dotted_as_name _loop0_36
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017427 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017428 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017429 return NULL;
17430 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017431 D(fprintf(stderr, "%*c> _gather_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_36"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017432 alias_ty elem;
17433 asdl_seq * seq;
17434 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017435 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017436 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017437 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017438 )
17439 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017440 D(fprintf(stderr, "%*c+ _gather_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_36"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017441 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017442 goto done;
17443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017444 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017445 D(fprintf(stderr, "%*c%s _gather_35[%d-%d]: %s failed!\n", p->level, ' ',
17446 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_36"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017448 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017449 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017450 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017451 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017452}
17453
Guido van Rossumc001c092020-04-30 12:12:19 -070017454// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017455static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070017456_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017457{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017458 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017459 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017460 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017461 return NULL;
17462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017463 void * _res = NULL;
17464 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017465 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017466 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017467 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017468 return NULL;
17469 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017470 D(fprintf(stderr, "%*c> _tmp_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017471 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017472 expr_ty z;
17473 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017474 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017475 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017476 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017477 )
17478 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017479 D(fprintf(stderr, "%*c+ _tmp_37[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017480 _res = z;
17481 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017482 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017483 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017484 return NULL;
17485 }
17486 goto done;
17487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017488 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017489 D(fprintf(stderr, "%*c%s _tmp_37[%d-%d]: %s failed!\n", p->level, ' ',
17490 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017492 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017493 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017494 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017495 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017496}
17497
Guido van Rossumc001c092020-04-30 12:12:19 -070017498// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017499static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017500_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017501{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017502 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017503 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017504 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017505 return NULL;
17506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017507 void *_res = NULL;
17508 int _mark = p->mark;
17509 int _start_mark = p->mark;
17510 void **_children = PyMem_Malloc(sizeof(void *));
17511 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017512 p->error_indicator = 1;
17513 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017514 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017515 return NULL;
17516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017517 ssize_t _children_capacity = 1;
17518 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017519 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017520 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017521 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017522 return NULL;
17523 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017524 D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017525 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017526 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017527 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017528 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017529 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017530 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017531 )
17532 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017533 _res = elem;
17534 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017535 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017536 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017537 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017538 return NULL;
17539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017540 if (_n == _children_capacity) {
17541 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017542 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17543 if (!_new_children) {
17544 p->error_indicator = 1;
17545 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017546 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017547 return NULL;
17548 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017549 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017551 _children[_n++] = _res;
17552 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017554 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017555 D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ',
17556 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017558 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17559 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017560 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017561 p->error_indicator = 1;
17562 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017563 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017564 return NULL;
17565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017566 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17567 PyMem_Free(_children);
17568 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017569 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017570 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017571}
17572
Guido van Rossumc001c092020-04-30 12:12:19 -070017573// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017574static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017575_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017576{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017577 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017578 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017579 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017580 return NULL;
17581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017582 asdl_seq * _res = NULL;
17583 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017584 { // with_item _loop0_39
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017585 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017586 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017587 return NULL;
17588 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017589 D(fprintf(stderr, "%*c> _gather_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_39"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017590 withitem_ty elem;
17591 asdl_seq * seq;
17592 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017593 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017594 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017595 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017596 )
17597 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017598 D(fprintf(stderr, "%*c+ _gather_38[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_39"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017599 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017600 goto done;
17601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017602 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017603 D(fprintf(stderr, "%*c%s _gather_38[%d-%d]: %s failed!\n", p->level, ' ',
17604 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_39"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017606 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017607 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017608 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017609 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017610}
17611
Guido van Rossumc001c092020-04-30 12:12:19 -070017612// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017613static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017614_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017615{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017616 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017617 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017618 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017619 return NULL;
17620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017621 void *_res = NULL;
17622 int _mark = p->mark;
17623 int _start_mark = p->mark;
17624 void **_children = PyMem_Malloc(sizeof(void *));
17625 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017626 p->error_indicator = 1;
17627 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017628 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017629 return NULL;
17630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017631 ssize_t _children_capacity = 1;
17632 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017633 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017634 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017635 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017636 return NULL;
17637 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017638 D(fprintf(stderr, "%*c> _loop0_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017639 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017640 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017641 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017642 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017643 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017644 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017645 )
17646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017647 _res = elem;
17648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017649 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017650 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017651 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017652 return NULL;
17653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017654 if (_n == _children_capacity) {
17655 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017656 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17657 if (!_new_children) {
17658 p->error_indicator = 1;
17659 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017660 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017661 return NULL;
17662 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017663 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017665 _children[_n++] = _res;
17666 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017668 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017669 D(fprintf(stderr, "%*c%s _loop0_41[%d-%d]: %s failed!\n", p->level, ' ',
17670 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017672 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17673 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017674 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017675 p->error_indicator = 1;
17676 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017677 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017678 return NULL;
17679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017680 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17681 PyMem_Free(_children);
17682 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017683 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017684 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017685}
17686
Guido van Rossumc001c092020-04-30 12:12:19 -070017687// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017688static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017689_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017690{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017691 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017692 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017693 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017694 return NULL;
17695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017696 asdl_seq * _res = NULL;
17697 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017698 { // with_item _loop0_41
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017699 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017700 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017701 return NULL;
17702 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017703 D(fprintf(stderr, "%*c> _gather_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_41"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017704 withitem_ty elem;
17705 asdl_seq * seq;
17706 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017707 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017709 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017710 )
17711 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017712 D(fprintf(stderr, "%*c+ _gather_40[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_41"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017713 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017714 goto done;
17715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017716 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017717 D(fprintf(stderr, "%*c%s _gather_40[%d-%d]: %s failed!\n", p->level, ' ',
17718 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_41"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017720 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017721 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017722 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017723 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017724}
17725
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017726// _loop0_43: ',' with_item
17727static asdl_seq *
17728_loop0_43_rule(Parser *p)
17729{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017730 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017731 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017732 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017733 return NULL;
17734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017735 void *_res = NULL;
17736 int _mark = p->mark;
17737 int _start_mark = p->mark;
17738 void **_children = PyMem_Malloc(sizeof(void *));
17739 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017740 p->error_indicator = 1;
17741 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017742 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017743 return NULL;
17744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017745 ssize_t _children_capacity = 1;
17746 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017747 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017748 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017749 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017750 return NULL;
17751 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017752 D(fprintf(stderr, "%*c> _loop0_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017753 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017754 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017755 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017756 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017757 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017758 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017759 )
17760 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017761 _res = elem;
17762 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017763 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017764 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017765 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017766 return NULL;
17767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017768 if (_n == _children_capacity) {
17769 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017770 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17771 if (!_new_children) {
17772 p->error_indicator = 1;
17773 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017774 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017775 return NULL;
17776 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017777 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017779 _children[_n++] = _res;
17780 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017782 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017783 D(fprintf(stderr, "%*c%s _loop0_43[%d-%d]: %s failed!\n", p->level, ' ',
17784 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017786 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17787 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017788 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017789 p->error_indicator = 1;
17790 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017791 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017792 return NULL;
17793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017794 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17795 PyMem_Free(_children);
17796 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017797 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017798 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017799}
17800
17801// _gather_42: with_item _loop0_43
17802static asdl_seq *
17803_gather_42_rule(Parser *p)
17804{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017805 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017806 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017807 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017808 return NULL;
17809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017810 asdl_seq * _res = NULL;
17811 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017812 { // with_item _loop0_43
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017813 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017814 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017815 return NULL;
17816 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017817 D(fprintf(stderr, "%*c> _gather_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_43"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017818 withitem_ty elem;
17819 asdl_seq * seq;
17820 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017821 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017822 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017823 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017824 )
17825 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017826 D(fprintf(stderr, "%*c+ _gather_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_43"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017827 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017828 goto done;
17829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017830 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017831 D(fprintf(stderr, "%*c%s _gather_42[%d-%d]: %s failed!\n", p->level, ' ',
17832 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_43"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017834 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017835 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017836 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017837 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017838}
17839
17840// _loop0_45: ',' with_item
17841static asdl_seq *
17842_loop0_45_rule(Parser *p)
17843{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017844 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017845 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017846 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017847 return NULL;
17848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017849 void *_res = NULL;
17850 int _mark = p->mark;
17851 int _start_mark = p->mark;
17852 void **_children = PyMem_Malloc(sizeof(void *));
17853 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017854 p->error_indicator = 1;
17855 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017856 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017857 return NULL;
17858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017859 ssize_t _children_capacity = 1;
17860 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017861 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017862 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017863 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017864 return NULL;
17865 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017866 D(fprintf(stderr, "%*c> _loop0_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017867 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017868 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017869 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017870 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017871 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017872 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017873 )
17874 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017875 _res = elem;
17876 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017877 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017878 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017879 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017880 return NULL;
17881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017882 if (_n == _children_capacity) {
17883 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017884 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17885 if (!_new_children) {
17886 p->error_indicator = 1;
17887 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017888 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017889 return NULL;
17890 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017891 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017893 _children[_n++] = _res;
17894 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017896 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017897 D(fprintf(stderr, "%*c%s _loop0_45[%d-%d]: %s failed!\n", p->level, ' ',
17898 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017900 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17901 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017902 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017903 p->error_indicator = 1;
17904 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017905 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017906 return NULL;
17907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017908 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17909 PyMem_Free(_children);
17910 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017911 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017912 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017913}
17914
17915// _gather_44: with_item _loop0_45
17916static asdl_seq *
17917_gather_44_rule(Parser *p)
17918{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017919 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017920 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017921 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017922 return NULL;
17923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017924 asdl_seq * _res = NULL;
17925 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017926 { // with_item _loop0_45
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017927 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017928 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017929 return NULL;
17930 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017931 D(fprintf(stderr, "%*c> _gather_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_45"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017932 withitem_ty elem;
17933 asdl_seq * seq;
17934 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017935 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017936 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017937 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017938 )
17939 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017940 D(fprintf(stderr, "%*c+ _gather_44[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_45"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017941 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017942 goto done;
17943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017944 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017945 D(fprintf(stderr, "%*c%s _gather_44[%d-%d]: %s failed!\n", p->level, ' ',
17946 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_45"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017948 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017949 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017950 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017951 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017952}
17953
17954// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017955static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017956_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017957{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017958 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017959 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017960 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017961 return NULL;
17962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017963 void * _res = NULL;
17964 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017965 { // 'as' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017966 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017967 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017968 return NULL;
17969 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017970 D(fprintf(stderr, "%*c> _tmp_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017971 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017972 expr_ty t;
17973 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017974 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017975 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017976 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017977 )
17978 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017979 D(fprintf(stderr, "%*c+ _tmp_46[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017980 _res = t;
17981 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017982 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017983 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017984 return NULL;
17985 }
17986 goto done;
17987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017988 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017989 D(fprintf(stderr, "%*c%s _tmp_46[%d-%d]: %s failed!\n", p->level, ' ',
17990 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017992 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017993 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017994 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017995 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017996}
17997
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017998// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017999static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018000_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018001{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018002 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018003 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018004 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018005 return NULL;
18006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018007 void *_res = NULL;
18008 int _mark = p->mark;
18009 int _start_mark = p->mark;
18010 void **_children = PyMem_Malloc(sizeof(void *));
18011 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018012 p->error_indicator = 1;
18013 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018014 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018015 return NULL;
18016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018017 ssize_t _children_capacity = 1;
18018 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018019 { // except_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018020 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018021 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018022 return NULL;
18023 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018024 D(fprintf(stderr, "%*c> _loop1_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018025 excepthandler_ty except_block_var;
18026 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018027 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018028 )
18029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018030 _res = except_block_var;
18031 if (_n == _children_capacity) {
18032 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018033 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18034 if (!_new_children) {
18035 p->error_indicator = 1;
18036 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018037 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018038 return NULL;
18039 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018040 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018042 _children[_n++] = _res;
18043 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018045 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018046 D(fprintf(stderr, "%*c%s _loop1_47[%d-%d]: %s failed!\n", p->level, ' ',
18047 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018049 if (_n == 0 || p->error_indicator) {
18050 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018051 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018052 return NULL;
18053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018054 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18055 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018056 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018057 p->error_indicator = 1;
18058 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018059 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018060 return NULL;
18061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018062 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18063 PyMem_Free(_children);
18064 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018065 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018066 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018067}
18068
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030018069// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018070static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018071_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018072{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018073 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018074 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018075 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018076 return NULL;
18077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018078 void * _res = NULL;
18079 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030018080 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018081 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018082 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018083 return NULL;
18084 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018085 D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018086 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018087 expr_ty z;
18088 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018089 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018090 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030018091 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018092 )
18093 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018094 D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018095 _res = z;
18096 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018097 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018098 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018099 return NULL;
18100 }
18101 goto done;
18102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018103 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018104 D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
18105 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018107 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018108 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018109 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018110 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018111}
18112
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018113// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018114static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018115_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018116{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018117 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018118 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018119 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018120 return NULL;
18121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018122 void * _res = NULL;
18123 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018124 { // 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018125 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018126 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018127 return NULL;
18128 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018129 D(fprintf(stderr, "%*c> _tmp_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018130 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018131 expr_ty z;
18132 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018133 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018134 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018135 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018136 )
18137 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018138 D(fprintf(stderr, "%*c+ _tmp_49[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018139 _res = z;
18140 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018141 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018142 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018143 return NULL;
18144 }
18145 goto done;
18146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018147 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018148 D(fprintf(stderr, "%*c%s _tmp_49[%d-%d]: %s failed!\n", p->level, ' ',
18149 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018151 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018152 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018153 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018154 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018155}
18156
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018157// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018158static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018159_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018160{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018161 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018162 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018163 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018164 return NULL;
18165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018166 void * _res = NULL;
18167 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018168 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018169 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018170 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018171 return NULL;
18172 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018173 D(fprintf(stderr, "%*c> _tmp_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018174 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070018175 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018176 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018177 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018178 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018179 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018180 )
18181 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018182 D(fprintf(stderr, "%*c+ _tmp_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018183 _res = z;
18184 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018185 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018186 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018187 return NULL;
18188 }
18189 goto done;
18190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018191 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018192 D(fprintf(stderr, "%*c%s _tmp_50[%d-%d]: %s failed!\n", p->level, ' ',
18193 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018195 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018196 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018197 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018198 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018199}
18200
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018201// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070018202static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018203_tmp_51_rule(Parser *p)
18204{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018205 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018206 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018207 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018208 return NULL;
18209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018210 void * _res = NULL;
18211 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018212 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018213 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018214 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018215 return NULL;
18216 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018217 D(fprintf(stderr, "%*c> _tmp_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018218 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018219 expr_ty z;
18220 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018221 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018222 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018223 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018224 )
18225 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018226 D(fprintf(stderr, "%*c+ _tmp_51[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018227 _res = z;
18228 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018229 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018230 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018231 return NULL;
18232 }
18233 goto done;
18234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018235 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018236 D(fprintf(stderr, "%*c%s _tmp_51[%d-%d]: %s failed!\n", p->level, ' ',
18237 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018239 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018240 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018241 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018242 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018243}
18244
18245// _tmp_52: NEWLINE INDENT
18246static void *
18247_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018248{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018249 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018250 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018251 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018252 return NULL;
18253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018254 void * _res = NULL;
18255 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018256 { // NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018257 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018258 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018259 return NULL;
18260 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018261 D(fprintf(stderr, "%*c> _tmp_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010018262 Token * indent_var;
18263 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070018264 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018265 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070018266 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018267 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070018268 )
18269 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018270 D(fprintf(stderr, "%*c+ _tmp_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018271 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070018272 goto done;
18273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018274 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018275 D(fprintf(stderr, "%*c%s _tmp_52[%d-%d]: %s failed!\n", p->level, ' ',
18276 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018278 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070018279 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018280 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018281 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070018282}
18283
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018284// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018285static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018286_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018287{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018288 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018289 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018290 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018291 return NULL;
18292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018293 void *_res = NULL;
18294 int _mark = p->mark;
18295 int _start_mark = p->mark;
18296 void **_children = PyMem_Malloc(sizeof(void *));
18297 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018298 p->error_indicator = 1;
18299 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018300 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018301 return NULL;
18302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018303 ssize_t _children_capacity = 1;
18304 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018305 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018306 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018307 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018308 return NULL;
18309 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018310 D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018311 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018312 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018313 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018314 )
18315 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018316 _res = param_no_default_var;
18317 if (_n == _children_capacity) {
18318 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018319 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18320 if (!_new_children) {
18321 p->error_indicator = 1;
18322 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018323 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018324 return NULL;
18325 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018326 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018328 _children[_n++] = _res;
18329 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018331 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018332 D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
18333 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018335 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18336 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018337 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018338 p->error_indicator = 1;
18339 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018340 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018341 return NULL;
18342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018343 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18344 PyMem_Free(_children);
18345 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018346 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018347 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018348}
18349
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018350// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018351static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018352_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018353{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018354 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018355 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018356 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018357 return NULL;
18358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018359 void *_res = NULL;
18360 int _mark = p->mark;
18361 int _start_mark = p->mark;
18362 void **_children = PyMem_Malloc(sizeof(void *));
18363 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018364 p->error_indicator = 1;
18365 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018366 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018367 return NULL;
18368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018369 ssize_t _children_capacity = 1;
18370 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018371 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018372 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018373 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018374 return NULL;
18375 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018376 D(fprintf(stderr, "%*c> _loop0_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018377 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018378 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018379 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018380 )
18381 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018382 _res = param_with_default_var;
18383 if (_n == _children_capacity) {
18384 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018385 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18386 if (!_new_children) {
18387 p->error_indicator = 1;
18388 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018389 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018390 return NULL;
18391 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018392 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018394 _children[_n++] = _res;
18395 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018397 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018398 D(fprintf(stderr, "%*c%s _loop0_54[%d-%d]: %s failed!\n", p->level, ' ',
18399 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018401 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18402 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018403 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018404 p->error_indicator = 1;
18405 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018406 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018407 return NULL;
18408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018409 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18410 PyMem_Free(_children);
18411 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018412 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018413 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018414}
18415
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018416// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018417static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018418_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018419{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018420 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018421 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018422 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018423 return NULL;
18424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018425 void *_res = NULL;
18426 int _mark = p->mark;
18427 int _start_mark = p->mark;
18428 void **_children = PyMem_Malloc(sizeof(void *));
18429 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018430 p->error_indicator = 1;
18431 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018432 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018433 return NULL;
18434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018435 ssize_t _children_capacity = 1;
18436 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018437 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018438 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018439 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018440 return NULL;
18441 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018442 D(fprintf(stderr, "%*c> _loop0_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018443 NameDefaultPair* param_with_default_var;
18444 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018445 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018446 )
18447 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018448 _res = param_with_default_var;
18449 if (_n == _children_capacity) {
18450 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018451 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18452 if (!_new_children) {
18453 p->error_indicator = 1;
18454 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018455 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018456 return NULL;
18457 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018458 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018460 _children[_n++] = _res;
18461 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018463 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018464 D(fprintf(stderr, "%*c%s _loop0_55[%d-%d]: %s failed!\n", p->level, ' ',
18465 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018467 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18468 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018469 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018470 p->error_indicator = 1;
18471 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018472 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018473 return NULL;
18474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018475 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18476 PyMem_Free(_children);
18477 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018478 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018479 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018480}
18481
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018482// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018483static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018484_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018485{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018486 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018487 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018488 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018489 return NULL;
18490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018491 void *_res = NULL;
18492 int _mark = p->mark;
18493 int _start_mark = p->mark;
18494 void **_children = PyMem_Malloc(sizeof(void *));
18495 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018496 p->error_indicator = 1;
18497 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018498 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018499 return NULL;
18500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018501 ssize_t _children_capacity = 1;
18502 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018503 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018504 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018505 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018506 return NULL;
18507 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018508 D(fprintf(stderr, "%*c> _loop1_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018509 arg_ty param_no_default_var;
18510 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018511 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018512 )
18513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018514 _res = param_no_default_var;
18515 if (_n == _children_capacity) {
18516 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018517 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18518 if (!_new_children) {
18519 p->error_indicator = 1;
18520 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018521 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018522 return NULL;
18523 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018524 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018526 _children[_n++] = _res;
18527 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018529 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018530 D(fprintf(stderr, "%*c%s _loop1_56[%d-%d]: %s failed!\n", p->level, ' ',
18531 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018533 if (_n == 0 || p->error_indicator) {
18534 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018535 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018536 return NULL;
18537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018538 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18539 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018540 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018541 p->error_indicator = 1;
18542 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018543 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018544 return NULL;
18545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018546 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18547 PyMem_Free(_children);
18548 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018549 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018550 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018551}
18552
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018553// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018554static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018555_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018556{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018557 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018558 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018559 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018560 return NULL;
18561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018562 void *_res = NULL;
18563 int _mark = p->mark;
18564 int _start_mark = p->mark;
18565 void **_children = PyMem_Malloc(sizeof(void *));
18566 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018567 p->error_indicator = 1;
18568 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018569 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018570 return NULL;
18571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018572 ssize_t _children_capacity = 1;
18573 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018574 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018575 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018576 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018577 return NULL;
18578 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018579 D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018580 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018581 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018582 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018583 )
18584 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018585 _res = param_with_default_var;
18586 if (_n == _children_capacity) {
18587 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018588 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18589 if (!_new_children) {
18590 p->error_indicator = 1;
18591 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018592 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018593 return NULL;
18594 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018595 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018597 _children[_n++] = _res;
18598 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018600 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018601 D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
18602 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018604 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18605 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018606 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018607 p->error_indicator = 1;
18608 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018609 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018610 return NULL;
18611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018612 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18613 PyMem_Free(_children);
18614 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018615 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018616 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018617}
18618
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018619// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018620static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018621_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018622{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018623 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018624 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018625 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018626 return NULL;
18627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018628 void *_res = NULL;
18629 int _mark = p->mark;
18630 int _start_mark = p->mark;
18631 void **_children = PyMem_Malloc(sizeof(void *));
18632 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018633 p->error_indicator = 1;
18634 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018635 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018636 return NULL;
18637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018638 ssize_t _children_capacity = 1;
18639 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018640 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018641 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018642 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018643 return NULL;
18644 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018645 D(fprintf(stderr, "%*c> _loop1_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018646 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018647 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018648 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018649 )
18650 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018651 _res = param_with_default_var;
18652 if (_n == _children_capacity) {
18653 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018654 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18655 if (!_new_children) {
18656 p->error_indicator = 1;
18657 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018658 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018659 return NULL;
18660 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018661 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018663 _children[_n++] = _res;
18664 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018666 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018667 D(fprintf(stderr, "%*c%s _loop1_58[%d-%d]: %s failed!\n", p->level, ' ',
18668 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018670 if (_n == 0 || p->error_indicator) {
18671 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018672 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018673 return NULL;
18674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018675 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18676 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018677 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018678 p->error_indicator = 1;
18679 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018680 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018681 return NULL;
18682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018683 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18684 PyMem_Free(_children);
18685 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018686 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018687 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018688}
18689
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018690// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018691static asdl_seq *
18692_loop1_59_rule(Parser *p)
18693{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018694 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018695 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018696 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018697 return NULL;
18698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018699 void *_res = NULL;
18700 int _mark = p->mark;
18701 int _start_mark = p->mark;
18702 void **_children = PyMem_Malloc(sizeof(void *));
18703 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018704 p->error_indicator = 1;
18705 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018706 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018707 return NULL;
18708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018709 ssize_t _children_capacity = 1;
18710 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018711 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018712 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018713 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018714 return NULL;
18715 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018716 D(fprintf(stderr, "%*c> _loop1_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018717 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070018718 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018719 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018720 )
18721 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018722 _res = param_no_default_var;
18723 if (_n == _children_capacity) {
18724 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018725 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18726 if (!_new_children) {
18727 p->error_indicator = 1;
18728 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018729 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018730 return NULL;
18731 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018732 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018734 _children[_n++] = _res;
18735 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018737 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018738 D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
18739 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018741 if (_n == 0 || p->error_indicator) {
18742 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018743 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018744 return NULL;
18745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018746 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18747 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018748 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018749 p->error_indicator = 1;
18750 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018751 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018752 return NULL;
18753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018754 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18755 PyMem_Free(_children);
18756 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018757 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018758 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018759}
18760
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018761// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018762static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018763_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018764{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018765 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018766 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018767 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018768 return NULL;
18769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018770 void *_res = NULL;
18771 int _mark = p->mark;
18772 int _start_mark = p->mark;
18773 void **_children = PyMem_Malloc(sizeof(void *));
18774 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018775 p->error_indicator = 1;
18776 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018777 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018778 return NULL;
18779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018780 ssize_t _children_capacity = 1;
18781 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018782 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018783 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018784 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018785 return NULL;
18786 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018787 D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018788 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070018789 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018790 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018791 )
18792 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018793 _res = param_no_default_var;
18794 if (_n == _children_capacity) {
18795 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018796 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18797 if (!_new_children) {
18798 p->error_indicator = 1;
18799 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018800 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018801 return NULL;
18802 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018803 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018805 _children[_n++] = _res;
18806 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018808 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018809 D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
18810 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018812 if (_n == 0 || p->error_indicator) {
18813 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018814 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018815 return NULL;
18816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018817 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18818 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018819 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018820 p->error_indicator = 1;
18821 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018822 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018823 return NULL;
18824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018825 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18826 PyMem_Free(_children);
18827 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018828 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018829 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018830}
18831
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018832// _loop0_61: param_no_default
18833static asdl_seq *
18834_loop0_61_rule(Parser *p)
18835{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018836 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018837 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018838 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018839 return NULL;
18840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018841 void *_res = NULL;
18842 int _mark = p->mark;
18843 int _start_mark = p->mark;
18844 void **_children = PyMem_Malloc(sizeof(void *));
18845 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018846 p->error_indicator = 1;
18847 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018848 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018849 return NULL;
18850 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018851 ssize_t _children_capacity = 1;
18852 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018853 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018854 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018855 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018856 return NULL;
18857 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018858 D(fprintf(stderr, "%*c> _loop0_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018859 arg_ty param_no_default_var;
18860 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018861 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018862 )
18863 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018864 _res = param_no_default_var;
18865 if (_n == _children_capacity) {
18866 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018867 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18868 if (!_new_children) {
18869 p->error_indicator = 1;
18870 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018871 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018872 return NULL;
18873 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018874 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018876 _children[_n++] = _res;
18877 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018879 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018880 D(fprintf(stderr, "%*c%s _loop0_61[%d-%d]: %s failed!\n", p->level, ' ',
18881 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018883 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18884 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018885 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018886 p->error_indicator = 1;
18887 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018888 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018889 return NULL;
18890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018891 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18892 PyMem_Free(_children);
18893 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018894 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018895 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018896}
18897
18898// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018899static asdl_seq *
18900_loop1_62_rule(Parser *p)
18901{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018902 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018903 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018904 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018905 return NULL;
18906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018907 void *_res = NULL;
18908 int _mark = p->mark;
18909 int _start_mark = p->mark;
18910 void **_children = PyMem_Malloc(sizeof(void *));
18911 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018912 p->error_indicator = 1;
18913 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018914 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018915 return NULL;
18916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018917 ssize_t _children_capacity = 1;
18918 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018919 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018920 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018921 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018922 return NULL;
18923 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018924 D(fprintf(stderr, "%*c> _loop1_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018925 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070018926 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018927 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018928 )
18929 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018930 _res = param_with_default_var;
18931 if (_n == _children_capacity) {
18932 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018933 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18934 if (!_new_children) {
18935 p->error_indicator = 1;
18936 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018937 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018938 return NULL;
18939 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018940 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018942 _children[_n++] = _res;
18943 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018945 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018946 D(fprintf(stderr, "%*c%s _loop1_62[%d-%d]: %s failed!\n", p->level, ' ',
18947 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018949 if (_n == 0 || p->error_indicator) {
18950 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018951 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018952 return NULL;
18953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018954 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18955 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018956 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018957 p->error_indicator = 1;
18958 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018959 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018960 return NULL;
18961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018962 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18963 PyMem_Free(_children);
18964 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018965 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018966 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018967}
18968
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018969// _loop0_63: param_no_default
18970static asdl_seq *
18971_loop0_63_rule(Parser *p)
18972{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018973 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018974 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018975 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018976 return NULL;
18977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018978 void *_res = NULL;
18979 int _mark = p->mark;
18980 int _start_mark = p->mark;
18981 void **_children = PyMem_Malloc(sizeof(void *));
18982 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018983 p->error_indicator = 1;
18984 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018985 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018986 return NULL;
18987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018988 ssize_t _children_capacity = 1;
18989 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018990 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018991 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018992 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018993 return NULL;
18994 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018995 D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018996 arg_ty param_no_default_var;
18997 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018998 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018999 )
19000 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019001 _res = param_no_default_var;
19002 if (_n == _children_capacity) {
19003 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019004 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19005 if (!_new_children) {
19006 p->error_indicator = 1;
19007 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019008 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019009 return NULL;
19010 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019011 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019013 _children[_n++] = _res;
19014 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019016 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019017 D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
19018 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019020 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19021 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019022 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019023 p->error_indicator = 1;
19024 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019025 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019026 return NULL;
19027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019028 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19029 PyMem_Free(_children);
19030 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019031 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019032 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019033}
19034
19035// _loop1_64: param_with_default
19036static asdl_seq *
19037_loop1_64_rule(Parser *p)
19038{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019039 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019040 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019041 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019042 return NULL;
19043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019044 void *_res = NULL;
19045 int _mark = p->mark;
19046 int _start_mark = p->mark;
19047 void **_children = PyMem_Malloc(sizeof(void *));
19048 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019049 p->error_indicator = 1;
19050 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019051 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019052 return NULL;
19053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019054 ssize_t _children_capacity = 1;
19055 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019056 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019057 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019058 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019059 return NULL;
19060 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019061 D(fprintf(stderr, "%*c> _loop1_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019062 NameDefaultPair* param_with_default_var;
19063 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019064 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019065 )
19066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019067 _res = param_with_default_var;
19068 if (_n == _children_capacity) {
19069 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019070 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19071 if (!_new_children) {
19072 p->error_indicator = 1;
19073 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019074 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019075 return NULL;
19076 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019077 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019079 _children[_n++] = _res;
19080 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019082 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019083 D(fprintf(stderr, "%*c%s _loop1_64[%d-%d]: %s failed!\n", p->level, ' ',
19084 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019086 if (_n == 0 || p->error_indicator) {
19087 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019088 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019089 return NULL;
19090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019091 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19092 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019093 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019094 p->error_indicator = 1;
19095 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019096 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019097 return NULL;
19098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019099 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19100 PyMem_Free(_children);
19101 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019102 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019103 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019104}
19105
19106// _loop0_65: param_maybe_default
19107static asdl_seq *
19108_loop0_65_rule(Parser *p)
19109{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019110 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019111 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019112 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019113 return NULL;
19114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019115 void *_res = NULL;
19116 int _mark = p->mark;
19117 int _start_mark = p->mark;
19118 void **_children = PyMem_Malloc(sizeof(void *));
19119 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019120 p->error_indicator = 1;
19121 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019122 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019123 return NULL;
19124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019125 ssize_t _children_capacity = 1;
19126 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019127 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019128 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019129 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019130 return NULL;
19131 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019132 D(fprintf(stderr, "%*c> _loop0_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019133 NameDefaultPair* param_maybe_default_var;
19134 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019135 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019136 )
19137 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019138 _res = param_maybe_default_var;
19139 if (_n == _children_capacity) {
19140 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019141 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19142 if (!_new_children) {
19143 p->error_indicator = 1;
19144 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019145 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019146 return NULL;
19147 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019148 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019150 _children[_n++] = _res;
19151 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019153 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019154 D(fprintf(stderr, "%*c%s _loop0_65[%d-%d]: %s failed!\n", p->level, ' ',
19155 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019157 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19158 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019159 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019160 p->error_indicator = 1;
19161 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019162 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019163 return NULL;
19164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019165 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19166 PyMem_Free(_children);
19167 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019168 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019169 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019170}
19171
19172// _loop1_66: param_maybe_default
19173static asdl_seq *
19174_loop1_66_rule(Parser *p)
19175{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019176 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019177 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019178 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019179 return NULL;
19180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019181 void *_res = NULL;
19182 int _mark = p->mark;
19183 int _start_mark = p->mark;
19184 void **_children = PyMem_Malloc(sizeof(void *));
19185 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019186 p->error_indicator = 1;
19187 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019188 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019189 return NULL;
19190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019191 ssize_t _children_capacity = 1;
19192 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019193 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019194 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019195 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019196 return NULL;
19197 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019198 D(fprintf(stderr, "%*c> _loop1_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019199 NameDefaultPair* param_maybe_default_var;
19200 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019201 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019202 )
19203 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019204 _res = param_maybe_default_var;
19205 if (_n == _children_capacity) {
19206 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019207 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19208 if (!_new_children) {
19209 p->error_indicator = 1;
19210 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019211 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019212 return NULL;
19213 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019214 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019216 _children[_n++] = _res;
19217 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019219 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019220 D(fprintf(stderr, "%*c%s _loop1_66[%d-%d]: %s failed!\n", p->level, ' ',
19221 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019223 if (_n == 0 || p->error_indicator) {
19224 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019225 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019226 return NULL;
19227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019228 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19229 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019230 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019231 p->error_indicator = 1;
19232 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019233 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019234 return NULL;
19235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019236 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19237 PyMem_Free(_children);
19238 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019239 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019240 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019241}
19242
19243// _loop1_67: ('@' named_expression NEWLINE)
19244static asdl_seq *
19245_loop1_67_rule(Parser *p)
19246{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019247 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019248 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019249 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019250 return NULL;
19251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019252 void *_res = NULL;
19253 int _mark = p->mark;
19254 int _start_mark = p->mark;
19255 void **_children = PyMem_Malloc(sizeof(void *));
19256 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019257 p->error_indicator = 1;
19258 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019259 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019260 return NULL;
19261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019262 ssize_t _children_capacity = 1;
19263 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019264 { // ('@' named_expression NEWLINE)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019265 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019266 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019267 return NULL;
19268 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019269 D(fprintf(stderr, "%*c> _loop1_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010019270 void *_tmp_141_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019271 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010019272 (_tmp_141_var = _tmp_141_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019273 )
19274 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010019275 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019276 if (_n == _children_capacity) {
19277 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019278 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19279 if (!_new_children) {
19280 p->error_indicator = 1;
19281 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019282 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019283 return NULL;
19284 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019285 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019287 _children[_n++] = _res;
19288 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019290 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019291 D(fprintf(stderr, "%*c%s _loop1_67[%d-%d]: %s failed!\n", p->level, ' ',
19292 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019294 if (_n == 0 || p->error_indicator) {
19295 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019296 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019297 return NULL;
19298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019299 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19300 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019301 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019302 p->error_indicator = 1;
19303 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019304 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019305 return NULL;
19306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019307 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19308 PyMem_Free(_children);
19309 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019310 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019311 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019312}
19313
19314// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019315static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019316_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019317{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019318 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019319 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019320 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019321 return NULL;
19322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019323 void * _res = NULL;
19324 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019325 { // '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019326 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019327 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019328 return NULL;
19329 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019330 D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019331 Token * _literal;
19332 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019333 void *z;
19334 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019335 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019337 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019338 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019339 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019340 )
19341 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019342 D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019343 _res = z;
19344 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019345 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019346 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019347 return NULL;
19348 }
19349 goto done;
19350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019351 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019352 D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
19353 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019355 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019356 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010019357 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019358 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019359}
19360
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019361// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019362static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019363_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019364{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019365 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019366 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019367 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019368 return NULL;
19369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019370 void *_res = NULL;
19371 int _mark = p->mark;
19372 int _start_mark = p->mark;
19373 void **_children = PyMem_Malloc(sizeof(void *));
19374 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019375 p->error_indicator = 1;
19376 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019377 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019378 return NULL;
19379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019380 ssize_t _children_capacity = 1;
19381 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019382 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019383 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019384 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019385 return NULL;
19386 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019387 D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019388 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019389 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019390 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019391 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019392 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019393 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019394 )
19395 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019396 _res = elem;
19397 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019398 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019399 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019400 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019401 return NULL;
19402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019403 if (_n == _children_capacity) {
19404 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019405 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19406 if (!_new_children) {
19407 p->error_indicator = 1;
19408 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019409 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019410 return NULL;
19411 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019412 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019414 _children[_n++] = _res;
19415 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019417 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019418 D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
19419 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019421 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19422 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019423 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019424 p->error_indicator = 1;
19425 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019426 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019427 return NULL;
19428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019429 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19430 PyMem_Free(_children);
19431 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019432 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019433 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019434}
19435
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019436// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019437static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019438_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019439{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019440 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019441 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019442 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019443 return NULL;
19444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019445 asdl_seq * _res = NULL;
19446 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019447 { // star_expression _loop0_70
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019448 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019449 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019450 return NULL;
19451 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019452 D(fprintf(stderr, "%*c> _gather_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression _loop0_70"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019453 expr_ty elem;
19454 asdl_seq * seq;
19455 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010019456 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019457 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019458 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019459 )
19460 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019461 D(fprintf(stderr, "%*c+ _gather_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression _loop0_70"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019462 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019463 goto done;
19464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019465 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019466 D(fprintf(stderr, "%*c%s _gather_69[%d-%d]: %s failed!\n", p->level, ' ',
19467 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression _loop0_70"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019470 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010019471 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019472 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019473}
19474
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019475// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019476static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019477_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019478{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019479 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019480 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019481 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019482 return NULL;
19483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019484 void *_res = NULL;
19485 int _mark = p->mark;
19486 int _start_mark = p->mark;
19487 void **_children = PyMem_Malloc(sizeof(void *));
19488 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019489 p->error_indicator = 1;
19490 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019491 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019492 return NULL;
19493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019494 ssize_t _children_capacity = 1;
19495 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019496 { // (',' star_expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019497 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019498 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019499 return NULL;
19500 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019501 D(fprintf(stderr, "%*c> _loop1_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010019502 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019503 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010019504 (_tmp_142_var = _tmp_142_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019505 )
19506 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010019507 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019508 if (_n == _children_capacity) {
19509 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019510 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19511 if (!_new_children) {
19512 p->error_indicator = 1;
19513 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019514 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019515 return NULL;
19516 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019517 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019519 _children[_n++] = _res;
19520 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019522 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019523 D(fprintf(stderr, "%*c%s _loop1_71[%d-%d]: %s failed!\n", p->level, ' ',
19524 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019526 if (_n == 0 || p->error_indicator) {
19527 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019528 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019529 return NULL;
19530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019531 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19532 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019533 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019534 p->error_indicator = 1;
19535 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019536 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019537 return NULL;
19538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019539 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19540 PyMem_Free(_children);
19541 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019542 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019543 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019544}
19545
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019546// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019547static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019548_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019549{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019550 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019551 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019552 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019553 return NULL;
19554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019555 void *_res = NULL;
19556 int _mark = p->mark;
19557 int _start_mark = p->mark;
19558 void **_children = PyMem_Malloc(sizeof(void *));
19559 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019560 p->error_indicator = 1;
19561 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019562 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019563 return NULL;
19564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019565 ssize_t _children_capacity = 1;
19566 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019567 { // ',' star_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019568 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019569 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019570 return NULL;
19571 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019572 D(fprintf(stderr, "%*c> _loop0_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019573 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019574 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019575 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019576 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019577 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019578 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019579 )
19580 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019581 _res = elem;
19582 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019583 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019584 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019585 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019586 return NULL;
19587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019588 if (_n == _children_capacity) {
19589 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019590 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19591 if (!_new_children) {
19592 p->error_indicator = 1;
19593 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019594 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019595 return NULL;
19596 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019597 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019599 _children[_n++] = _res;
19600 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019602 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019603 D(fprintf(stderr, "%*c%s _loop0_73[%d-%d]: %s failed!\n", p->level, ' ',
19604 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019606 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19607 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019608 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019609 p->error_indicator = 1;
19610 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019611 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019612 return NULL;
19613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019614 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19615 PyMem_Free(_children);
19616 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019617 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019618 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019619}
19620
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019621// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019622static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019623_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019624{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019625 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019626 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019627 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019628 return NULL;
19629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019630 asdl_seq * _res = NULL;
19631 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019632 { // star_named_expression _loop0_73
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019633 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019634 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019635 return NULL;
19636 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019637 D(fprintf(stderr, "%*c> _gather_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_73"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019638 expr_ty elem;
19639 asdl_seq * seq;
19640 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010019641 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019642 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019643 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019644 )
19645 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019646 D(fprintf(stderr, "%*c+ _gather_72[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_73"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019647 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019648 goto done;
19649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019650 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019651 D(fprintf(stderr, "%*c%s _gather_72[%d-%d]: %s failed!\n", p->level, ' ',
19652 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_73"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019654 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019655 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010019656 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019657 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019658}
19659
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019660// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019661static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019662_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019663{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019664 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019665 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019666 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019667 return NULL;
19668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019669 void *_res = NULL;
19670 int _mark = p->mark;
19671 int _start_mark = p->mark;
19672 void **_children = PyMem_Malloc(sizeof(void *));
19673 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019674 p->error_indicator = 1;
19675 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019676 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019677 return NULL;
19678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019679 ssize_t _children_capacity = 1;
19680 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019681 { // (',' expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019682 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019683 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019684 return NULL;
19685 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019686 D(fprintf(stderr, "%*c> _loop1_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010019687 void *_tmp_143_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019688 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010019689 (_tmp_143_var = _tmp_143_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019690 )
19691 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010019692 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019693 if (_n == _children_capacity) {
19694 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019695 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19696 if (!_new_children) {
19697 p->error_indicator = 1;
19698 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019699 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019700 return NULL;
19701 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019702 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019704 _children[_n++] = _res;
19705 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019707 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019708 D(fprintf(stderr, "%*c%s _loop1_74[%d-%d]: %s failed!\n", p->level, ' ',
19709 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019711 if (_n == 0 || p->error_indicator) {
19712 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019713 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019714 return NULL;
19715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019716 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19717 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019718 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019719 p->error_indicator = 1;
19720 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019721 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019722 return NULL;
19723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019724 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19725 PyMem_Free(_children);
19726 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019727 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019728 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019729}
19730
Guido van Rossum3941d972020-05-01 09:42:03 -070019731// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019732static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070019733_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019734{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019735 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019736 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019737 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019738 return NULL;
19739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019740 void *_res = NULL;
19741 int _mark = p->mark;
19742 int _start_mark = p->mark;
19743 void **_children = PyMem_Malloc(sizeof(void *));
19744 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019745 p->error_indicator = 1;
19746 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019747 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019748 return NULL;
19749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019750 ssize_t _children_capacity = 1;
19751 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019752 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019753 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019754 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019755 return NULL;
19756 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019757 D(fprintf(stderr, "%*c> _loop0_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070019758 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019759 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019760 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019761 )
19762 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019763 _res = lambda_param_no_default_var;
19764 if (_n == _children_capacity) {
19765 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019766 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19767 if (!_new_children) {
19768 p->error_indicator = 1;
19769 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019770 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019771 return NULL;
19772 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019773 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019775 _children[_n++] = _res;
19776 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019778 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019779 D(fprintf(stderr, "%*c%s _loop0_75[%d-%d]: %s failed!\n", p->level, ' ',
19780 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019782 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19783 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019784 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019785 p->error_indicator = 1;
19786 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019787 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019788 return NULL;
19789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019790 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19791 PyMem_Free(_children);
19792 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019793 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019794 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019795}
19796
Guido van Rossum3941d972020-05-01 09:42:03 -070019797// _loop0_76: lambda_param_with_default
19798static asdl_seq *
19799_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019800{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019801 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019802 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019803 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019804 return NULL;
19805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019806 void *_res = NULL;
19807 int _mark = p->mark;
19808 int _start_mark = p->mark;
19809 void **_children = PyMem_Malloc(sizeof(void *));
19810 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019811 p->error_indicator = 1;
19812 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019813 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019814 return NULL;
19815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019816 ssize_t _children_capacity = 1;
19817 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019818 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019819 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019820 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019821 return NULL;
19822 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019823 D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070019824 NameDefaultPair* lambda_param_with_default_var;
19825 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019826 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019827 )
19828 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019829 _res = lambda_param_with_default_var;
19830 if (_n == _children_capacity) {
19831 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019832 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19833 if (!_new_children) {
19834 p->error_indicator = 1;
19835 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019836 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019837 return NULL;
19838 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019839 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019841 _children[_n++] = _res;
19842 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019844 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019845 D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
19846 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019848 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19849 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019850 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019851 p->error_indicator = 1;
19852 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019853 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019854 return NULL;
19855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019856 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19857 PyMem_Free(_children);
19858 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019859 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019860 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019861}
19862
Guido van Rossum3941d972020-05-01 09:42:03 -070019863// _loop0_77: lambda_param_with_default
19864static asdl_seq *
19865_loop0_77_rule(Parser *p)
19866{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019867 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070019868 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019869 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019870 return NULL;
19871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019872 void *_res = NULL;
19873 int _mark = p->mark;
19874 int _start_mark = p->mark;
19875 void **_children = PyMem_Malloc(sizeof(void *));
19876 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019877 p->error_indicator = 1;
19878 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019879 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019880 return NULL;
19881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019882 ssize_t _children_capacity = 1;
19883 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019884 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019885 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019886 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019887 return NULL;
19888 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019889 D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070019890 NameDefaultPair* lambda_param_with_default_var;
19891 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019892 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070019893 )
19894 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019895 _res = lambda_param_with_default_var;
19896 if (_n == _children_capacity) {
19897 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019898 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19899 if (!_new_children) {
19900 p->error_indicator = 1;
19901 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019902 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019903 return NULL;
19904 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019905 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070019906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019907 _children[_n++] = _res;
19908 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070019909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019910 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019911 D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
19912 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070019913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019914 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19915 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019916 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019917 p->error_indicator = 1;
19918 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019919 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019920 return NULL;
19921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019922 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19923 PyMem_Free(_children);
19924 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019925 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019926 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070019927}
19928
19929// _loop1_78: lambda_param_no_default
19930static asdl_seq *
19931_loop1_78_rule(Parser *p)
19932{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019933 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070019934 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019935 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019936 return NULL;
19937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019938 void *_res = NULL;
19939 int _mark = p->mark;
19940 int _start_mark = p->mark;
19941 void **_children = PyMem_Malloc(sizeof(void *));
19942 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019943 p->error_indicator = 1;
19944 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019945 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019946 return NULL;
19947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019948 ssize_t _children_capacity = 1;
19949 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019950 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019951 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019952 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019953 return NULL;
19954 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019955 D(fprintf(stderr, "%*c> _loop1_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070019956 arg_ty lambda_param_no_default_var;
19957 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019958 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070019959 )
19960 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019961 _res = lambda_param_no_default_var;
19962 if (_n == _children_capacity) {
19963 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019964 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19965 if (!_new_children) {
19966 p->error_indicator = 1;
19967 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019968 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019969 return NULL;
19970 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019971 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070019972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019973 _children[_n++] = _res;
19974 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070019975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019976 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019977 D(fprintf(stderr, "%*c%s _loop1_78[%d-%d]: %s failed!\n", p->level, ' ',
19978 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070019979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019980 if (_n == 0 || p->error_indicator) {
19981 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019982 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019983 return NULL;
19984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019985 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19986 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019987 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019988 p->error_indicator = 1;
19989 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019990 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019991 return NULL;
19992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019993 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19994 PyMem_Free(_children);
19995 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019996 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019997 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070019998}
19999
20000// _loop0_79: lambda_param_with_default
20001static asdl_seq *
20002_loop0_79_rule(Parser *p)
20003{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020004 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020005 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020006 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020007 return NULL;
20008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020009 void *_res = NULL;
20010 int _mark = p->mark;
20011 int _start_mark = p->mark;
20012 void **_children = PyMem_Malloc(sizeof(void *));
20013 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020014 p->error_indicator = 1;
20015 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020016 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020017 return NULL;
20018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020019 ssize_t _children_capacity = 1;
20020 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020021 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020022 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020023 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020024 return NULL;
20025 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020026 D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020027 NameDefaultPair* lambda_param_with_default_var;
20028 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020029 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020030 )
20031 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020032 _res = lambda_param_with_default_var;
20033 if (_n == _children_capacity) {
20034 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020035 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20036 if (!_new_children) {
20037 p->error_indicator = 1;
20038 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020039 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020040 return NULL;
20041 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020042 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020044 _children[_n++] = _res;
20045 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020047 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020048 D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
20049 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020051 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20052 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020053 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020054 p->error_indicator = 1;
20055 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020056 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020057 return NULL;
20058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020059 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20060 PyMem_Free(_children);
20061 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020062 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020063 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020064}
20065
20066// _loop1_80: lambda_param_with_default
20067static asdl_seq *
20068_loop1_80_rule(Parser *p)
20069{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020070 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020071 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020072 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020073 return NULL;
20074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020075 void *_res = NULL;
20076 int _mark = p->mark;
20077 int _start_mark = p->mark;
20078 void **_children = PyMem_Malloc(sizeof(void *));
20079 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020080 p->error_indicator = 1;
20081 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020082 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020083 return NULL;
20084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020085 ssize_t _children_capacity = 1;
20086 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020087 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020088 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020089 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020090 return NULL;
20091 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020092 D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020093 NameDefaultPair* lambda_param_with_default_var;
20094 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020095 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020096 )
20097 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020098 _res = lambda_param_with_default_var;
20099 if (_n == _children_capacity) {
20100 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020101 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20102 if (!_new_children) {
20103 p->error_indicator = 1;
20104 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020105 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020106 return NULL;
20107 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020108 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020110 _children[_n++] = _res;
20111 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020113 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020114 D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
20115 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020117 if (_n == 0 || p->error_indicator) {
20118 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020119 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020120 return NULL;
20121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020122 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20123 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020124 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020125 p->error_indicator = 1;
20126 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020127 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020128 return NULL;
20129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020130 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20131 PyMem_Free(_children);
20132 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020133 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020134 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020135}
20136
20137// _loop1_81: lambda_param_no_default
20138static asdl_seq *
20139_loop1_81_rule(Parser *p)
20140{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020141 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020142 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020143 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020144 return NULL;
20145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020146 void *_res = NULL;
20147 int _mark = p->mark;
20148 int _start_mark = p->mark;
20149 void **_children = PyMem_Malloc(sizeof(void *));
20150 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020151 p->error_indicator = 1;
20152 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020153 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020154 return NULL;
20155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020156 ssize_t _children_capacity = 1;
20157 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020158 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020159 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020160 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020161 return NULL;
20162 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020163 D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020164 arg_ty lambda_param_no_default_var;
20165 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020166 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020167 )
20168 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020169 _res = lambda_param_no_default_var;
20170 if (_n == _children_capacity) {
20171 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020172 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20173 if (!_new_children) {
20174 p->error_indicator = 1;
20175 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020176 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020177 return NULL;
20178 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020179 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020181 _children[_n++] = _res;
20182 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020184 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020185 D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
20186 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020188 if (_n == 0 || p->error_indicator) {
20189 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020190 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020191 return NULL;
20192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020193 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20194 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020195 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020196 p->error_indicator = 1;
20197 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020198 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020199 return NULL;
20200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020201 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20202 PyMem_Free(_children);
20203 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020204 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020205 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020206}
20207
20208// _loop1_82: lambda_param_no_default
20209static asdl_seq *
20210_loop1_82_rule(Parser *p)
20211{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020212 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020213 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020214 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020215 return NULL;
20216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020217 void *_res = NULL;
20218 int _mark = p->mark;
20219 int _start_mark = p->mark;
20220 void **_children = PyMem_Malloc(sizeof(void *));
20221 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020222 p->error_indicator = 1;
20223 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020224 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020225 return NULL;
20226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020227 ssize_t _children_capacity = 1;
20228 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020229 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020230 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020231 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020232 return NULL;
20233 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020234 D(fprintf(stderr, "%*c> _loop1_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020235 arg_ty lambda_param_no_default_var;
20236 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020237 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020238 )
20239 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020240 _res = lambda_param_no_default_var;
20241 if (_n == _children_capacity) {
20242 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020243 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20244 if (!_new_children) {
20245 p->error_indicator = 1;
20246 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020247 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020248 return NULL;
20249 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020250 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020252 _children[_n++] = _res;
20253 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020255 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020256 D(fprintf(stderr, "%*c%s _loop1_82[%d-%d]: %s failed!\n", p->level, ' ',
20257 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020259 if (_n == 0 || p->error_indicator) {
20260 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020261 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020262 return NULL;
20263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020264 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20265 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020266 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020267 p->error_indicator = 1;
20268 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020269 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020270 return NULL;
20271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020272 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20273 PyMem_Free(_children);
20274 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020275 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020276 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020277}
20278
20279// _loop0_83: lambda_param_no_default
20280static asdl_seq *
20281_loop0_83_rule(Parser *p)
20282{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020283 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020284 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020285 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020286 return NULL;
20287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020288 void *_res = NULL;
20289 int _mark = p->mark;
20290 int _start_mark = p->mark;
20291 void **_children = PyMem_Malloc(sizeof(void *));
20292 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020293 p->error_indicator = 1;
20294 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020295 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020296 return NULL;
20297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020298 ssize_t _children_capacity = 1;
20299 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020300 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020301 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020302 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020303 return NULL;
20304 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020305 D(fprintf(stderr, "%*c> _loop0_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020306 arg_ty lambda_param_no_default_var;
20307 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020308 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020309 )
20310 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020311 _res = lambda_param_no_default_var;
20312 if (_n == _children_capacity) {
20313 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020314 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20315 if (!_new_children) {
20316 p->error_indicator = 1;
20317 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020318 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020319 return NULL;
20320 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020321 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020323 _children[_n++] = _res;
20324 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020326 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020327 D(fprintf(stderr, "%*c%s _loop0_83[%d-%d]: %s failed!\n", p->level, ' ',
20328 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020330 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20331 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020332 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020333 p->error_indicator = 1;
20334 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020335 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020336 return NULL;
20337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020338 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20339 PyMem_Free(_children);
20340 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020341 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020342 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020343}
20344
20345// _loop1_84: lambda_param_with_default
20346static asdl_seq *
20347_loop1_84_rule(Parser *p)
20348{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020349 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020350 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020351 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020352 return NULL;
20353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020354 void *_res = NULL;
20355 int _mark = p->mark;
20356 int _start_mark = p->mark;
20357 void **_children = PyMem_Malloc(sizeof(void *));
20358 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020359 p->error_indicator = 1;
20360 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020361 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020362 return NULL;
20363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020364 ssize_t _children_capacity = 1;
20365 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020366 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020367 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020368 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020369 return NULL;
20370 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020371 D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020372 NameDefaultPair* lambda_param_with_default_var;
20373 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020374 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020375 )
20376 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020377 _res = lambda_param_with_default_var;
20378 if (_n == _children_capacity) {
20379 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020380 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20381 if (!_new_children) {
20382 p->error_indicator = 1;
20383 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020384 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020385 return NULL;
20386 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020387 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020389 _children[_n++] = _res;
20390 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020392 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020393 D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ',
20394 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020396 if (_n == 0 || p->error_indicator) {
20397 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020398 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020399 return NULL;
20400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020401 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20402 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020403 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020404 p->error_indicator = 1;
20405 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020406 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020407 return NULL;
20408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020409 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20410 PyMem_Free(_children);
20411 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020412 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020413 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020414}
20415
20416// _loop0_85: lambda_param_no_default
20417static asdl_seq *
20418_loop0_85_rule(Parser *p)
20419{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020420 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020421 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020422 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020423 return NULL;
20424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020425 void *_res = NULL;
20426 int _mark = p->mark;
20427 int _start_mark = p->mark;
20428 void **_children = PyMem_Malloc(sizeof(void *));
20429 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020430 p->error_indicator = 1;
20431 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020432 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020433 return NULL;
20434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020435 ssize_t _children_capacity = 1;
20436 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020437 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020438 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020439 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020440 return NULL;
20441 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020442 D(fprintf(stderr, "%*c> _loop0_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020443 arg_ty lambda_param_no_default_var;
20444 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020445 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020446 )
20447 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020448 _res = lambda_param_no_default_var;
20449 if (_n == _children_capacity) {
20450 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020451 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20452 if (!_new_children) {
20453 p->error_indicator = 1;
20454 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020455 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020456 return NULL;
20457 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020458 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020460 _children[_n++] = _res;
20461 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020463 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020464 D(fprintf(stderr, "%*c%s _loop0_85[%d-%d]: %s failed!\n", p->level, ' ',
20465 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020467 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20468 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020469 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020470 p->error_indicator = 1;
20471 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020472 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020473 return NULL;
20474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020475 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20476 PyMem_Free(_children);
20477 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020478 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020479 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020480}
20481
20482// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020483static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030020484_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020485{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020486 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020487 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020488 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020489 return NULL;
20490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020491 void *_res = NULL;
20492 int _mark = p->mark;
20493 int _start_mark = p->mark;
20494 void **_children = PyMem_Malloc(sizeof(void *));
20495 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020496 p->error_indicator = 1;
20497 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020498 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020499 return NULL;
20500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020501 ssize_t _children_capacity = 1;
20502 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020503 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020504 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020505 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020506 return NULL;
20507 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020508 D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020509 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020510 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020511 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020512 )
20513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020514 _res = lambda_param_with_default_var;
20515 if (_n == _children_capacity) {
20516 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020517 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20518 if (!_new_children) {
20519 p->error_indicator = 1;
20520 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020521 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020522 return NULL;
20523 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020524 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020526 _children[_n++] = _res;
20527 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020529 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020530 D(fprintf(stderr, "%*c%s _loop1_86[%d-%d]: %s failed!\n", p->level, ' ',
20531 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020533 if (_n == 0 || p->error_indicator) {
20534 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020535 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020536 return NULL;
20537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020538 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20539 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020540 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020541 p->error_indicator = 1;
20542 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020543 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020544 return NULL;
20545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020546 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20547 PyMem_Free(_children);
20548 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020549 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020550 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020551}
20552
Guido van Rossum3941d972020-05-01 09:42:03 -070020553// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020554static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020555_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020556{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020557 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020558 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020559 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020560 return NULL;
20561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020562 void *_res = NULL;
20563 int _mark = p->mark;
20564 int _start_mark = p->mark;
20565 void **_children = PyMem_Malloc(sizeof(void *));
20566 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020567 p->error_indicator = 1;
20568 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020569 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020570 return NULL;
20571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020572 ssize_t _children_capacity = 1;
20573 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020574 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020575 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020576 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020577 return NULL;
20578 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020579 D(fprintf(stderr, "%*c> _loop0_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020580 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020581 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020582 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020583 )
20584 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020585 _res = lambda_param_maybe_default_var;
20586 if (_n == _children_capacity) {
20587 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020588 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20589 if (!_new_children) {
20590 p->error_indicator = 1;
20591 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020592 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020593 return NULL;
20594 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020595 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020597 _children[_n++] = _res;
20598 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020600 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020601 D(fprintf(stderr, "%*c%s _loop0_87[%d-%d]: %s failed!\n", p->level, ' ',
20602 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020604 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20605 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020606 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020607 p->error_indicator = 1;
20608 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020609 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020610 return NULL;
20611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020612 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20613 PyMem_Free(_children);
20614 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020615 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020616 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020617}
20618
Guido van Rossum3941d972020-05-01 09:42:03 -070020619// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020620static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020621_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020622{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020623 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020624 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020625 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020626 return NULL;
20627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020628 void *_res = NULL;
20629 int _mark = p->mark;
20630 int _start_mark = p->mark;
20631 void **_children = PyMem_Malloc(sizeof(void *));
20632 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020633 p->error_indicator = 1;
20634 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020635 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020636 return NULL;
20637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020638 ssize_t _children_capacity = 1;
20639 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020640 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020641 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020642 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020643 return NULL;
20644 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020645 D(fprintf(stderr, "%*c> _loop1_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020646 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020647 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020648 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020649 )
20650 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020651 _res = lambda_param_maybe_default_var;
20652 if (_n == _children_capacity) {
20653 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020654 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20655 if (!_new_children) {
20656 p->error_indicator = 1;
20657 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020658 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020659 return NULL;
20660 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020661 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020663 _children[_n++] = _res;
20664 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020666 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020667 D(fprintf(stderr, "%*c%s _loop1_88[%d-%d]: %s failed!\n", p->level, ' ',
20668 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020670 if (_n == 0 || p->error_indicator) {
20671 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020672 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020673 return NULL;
20674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020675 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20676 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020677 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020678 p->error_indicator = 1;
20679 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020680 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020681 return NULL;
20682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020683 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20684 PyMem_Free(_children);
20685 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020686 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020687 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020688}
20689
Guido van Rossum3941d972020-05-01 09:42:03 -070020690// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020691static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020692_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020693{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020694 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020695 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020696 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020697 return NULL;
20698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020699 void *_res = NULL;
20700 int _mark = p->mark;
20701 int _start_mark = p->mark;
20702 void **_children = PyMem_Malloc(sizeof(void *));
20703 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020704 p->error_indicator = 1;
20705 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020706 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020707 return NULL;
20708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020709 ssize_t _children_capacity = 1;
20710 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020711 { // ('or' conjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020712 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020713 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020714 return NULL;
20715 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020716 D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010020717 void *_tmp_144_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020718 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010020719 (_tmp_144_var = _tmp_144_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020720 )
20721 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010020722 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020723 if (_n == _children_capacity) {
20724 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020725 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20726 if (!_new_children) {
20727 p->error_indicator = 1;
20728 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020729 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020730 return NULL;
20731 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020732 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020734 _children[_n++] = _res;
20735 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020737 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020738 D(fprintf(stderr, "%*c%s _loop1_89[%d-%d]: %s failed!\n", p->level, ' ',
20739 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020741 if (_n == 0 || p->error_indicator) {
20742 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020743 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020744 return NULL;
20745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020746 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20747 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020748 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020749 p->error_indicator = 1;
20750 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020751 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020752 return NULL;
20753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020754 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20755 PyMem_Free(_children);
20756 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020757 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020758 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020759}
20760
Guido van Rossum3941d972020-05-01 09:42:03 -070020761// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020762static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020763_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020764{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020765 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020766 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020767 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020768 return NULL;
20769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020770 void *_res = NULL;
20771 int _mark = p->mark;
20772 int _start_mark = p->mark;
20773 void **_children = PyMem_Malloc(sizeof(void *));
20774 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020775 p->error_indicator = 1;
20776 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020777 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020778 return NULL;
20779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020780 ssize_t _children_capacity = 1;
20781 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020782 { // ('and' inversion)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020783 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020784 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020785 return NULL;
20786 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020787 D(fprintf(stderr, "%*c> _loop1_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010020788 void *_tmp_145_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020789 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010020790 (_tmp_145_var = _tmp_145_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020791 )
20792 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010020793 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020794 if (_n == _children_capacity) {
20795 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020796 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20797 if (!_new_children) {
20798 p->error_indicator = 1;
20799 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020800 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020801 return NULL;
20802 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020803 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020805 _children[_n++] = _res;
20806 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020808 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020809 D(fprintf(stderr, "%*c%s _loop1_90[%d-%d]: %s failed!\n", p->level, ' ',
20810 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020812 if (_n == 0 || p->error_indicator) {
20813 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020814 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020815 return NULL;
20816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020817 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20818 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020819 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020820 p->error_indicator = 1;
20821 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020822 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020823 return NULL;
20824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020825 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20826 PyMem_Free(_children);
20827 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020828 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020829 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020830}
20831
Guido van Rossum3941d972020-05-01 09:42:03 -070020832// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020833static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020834_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020835{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020836 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020837 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020838 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020839 return NULL;
20840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020841 void *_res = NULL;
20842 int _mark = p->mark;
20843 int _start_mark = p->mark;
20844 void **_children = PyMem_Malloc(sizeof(void *));
20845 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020846 p->error_indicator = 1;
20847 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020848 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020849 return NULL;
20850 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020851 ssize_t _children_capacity = 1;
20852 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020853 { // compare_op_bitwise_or_pair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020854 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020855 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020856 return NULL;
20857 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020858 D(fprintf(stderr, "%*c> _loop1_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020859 CmpopExprPair* compare_op_bitwise_or_pair_var;
20860 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020861 (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p)) // compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020862 )
20863 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020864 _res = compare_op_bitwise_or_pair_var;
20865 if (_n == _children_capacity) {
20866 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020867 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20868 if (!_new_children) {
20869 p->error_indicator = 1;
20870 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020871 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020872 return NULL;
20873 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020874 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020876 _children[_n++] = _res;
20877 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020879 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020880 D(fprintf(stderr, "%*c%s _loop1_91[%d-%d]: %s failed!\n", p->level, ' ',
20881 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020883 if (_n == 0 || p->error_indicator) {
20884 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020885 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020886 return NULL;
20887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020888 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20889 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020890 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020891 p->error_indicator = 1;
20892 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020893 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020894 return NULL;
20895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020896 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20897 PyMem_Free(_children);
20898 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020899 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020900 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020901}
20902
Guido van Rossum3941d972020-05-01 09:42:03 -070020903// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010020904static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070020905_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010020906{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020907 D(p->level++);
Pablo Galindo2b74c832020-04-27 18:02:07 +010020908 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020909 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010020910 return NULL;
20911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020912 void * _res = NULL;
20913 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010020914 { // '!='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020915 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020916 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020917 return NULL;
20918 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020919 D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010020920 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010020921 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010020922 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010020923 )
20924 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020925 D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020926 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
20927 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010020928 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020929 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010020930 return NULL;
20931 }
20932 goto done;
20933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020934 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020935 D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ',
20936 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
Pablo Galindo2b74c832020-04-27 18:02:07 +010020937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020938 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010020939 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010020940 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020941 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010020942}
20943
Guido van Rossum3941d972020-05-01 09:42:03 -070020944// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020945static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020946_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020947{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020948 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020949 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020950 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020951 return NULL;
20952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020953 void *_res = NULL;
20954 int _mark = p->mark;
20955 int _start_mark = p->mark;
20956 void **_children = PyMem_Malloc(sizeof(void *));
20957 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020958 p->error_indicator = 1;
20959 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020960 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020961 return NULL;
20962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020963 ssize_t _children_capacity = 1;
20964 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020965 { // ',' slice
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020966 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020967 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020968 return NULL;
20969 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020970 D(fprintf(stderr, "%*c> _loop0_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' slice"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020971 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020972 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020973 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020974 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020975 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010020976 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020977 )
20978 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020979 _res = elem;
20980 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020981 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020982 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020983 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020984 return NULL;
20985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020986 if (_n == _children_capacity) {
20987 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020988 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20989 if (!_new_children) {
20990 p->error_indicator = 1;
20991 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020992 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020993 return NULL;
20994 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020995 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020997 _children[_n++] = _res;
20998 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021000 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021001 D(fprintf(stderr, "%*c%s _loop0_94[%d-%d]: %s failed!\n", p->level, ' ',
21002 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' slice"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021003 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021004 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21005 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021006 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021007 p->error_indicator = 1;
21008 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021009 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021010 return NULL;
21011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021012 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21013 PyMem_Free(_children);
21014 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021015 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021016 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021017}
21018
Guido van Rossum3941d972020-05-01 09:42:03 -070021019// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021020static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021021_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021022{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021023 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021024 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021025 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021026 return NULL;
21027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021028 asdl_seq * _res = NULL;
21029 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070021030 { // slice _loop0_94
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021031 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021032 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021033 return NULL;
21034 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021035 D(fprintf(stderr, "%*c> _gather_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice _loop0_94"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021036 expr_ty elem;
21037 asdl_seq * seq;
21038 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021039 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021041 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021042 )
21043 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021044 D(fprintf(stderr, "%*c+ _gather_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice _loop0_94"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021045 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021046 goto done;
21047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021048 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021049 D(fprintf(stderr, "%*c%s _gather_93[%d-%d]: %s failed!\n", p->level, ' ',
21050 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice _loop0_94"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021052 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021053 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021054 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021055 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021056}
21057
Guido van Rossum3941d972020-05-01 09:42:03 -070021058// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021059static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021060_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021061{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021062 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021063 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021064 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021065 return NULL;
21066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021067 void * _res = NULL;
21068 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021069 { // ':' expression?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021070 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021071 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021072 return NULL;
21073 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021074 D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021075 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021076 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021077 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021078 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021079 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021080 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021081 )
21082 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021083 D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021084 _res = d;
21085 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021086 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021087 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021088 return NULL;
21089 }
21090 goto done;
21091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021092 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021093 D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ',
21094 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021096 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021097 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021098 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021099 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021100}
21101
Guido van Rossum3941d972020-05-01 09:42:03 -070021102// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021103static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021104_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021105{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021106 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021107 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021108 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021109 return NULL;
21110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021111 void * _res = NULL;
21112 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021113 { // tuple
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021114 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021115 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021116 return NULL;
21117 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021118 D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021119 expr_ty tuple_var;
21120 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021121 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021122 )
21123 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021124 D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021125 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021126 goto done;
21127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021128 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021129 D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ',
21130 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021131 }
21132 { // group
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021133 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021134 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021135 return NULL;
21136 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021137 D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021138 expr_ty group_var;
21139 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021140 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021141 )
21142 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021143 D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021144 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021145 goto done;
21146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021147 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021148 D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ',
21149 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021150 }
21151 { // genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021152 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021153 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021154 return NULL;
21155 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021156 D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021157 expr_ty genexp_var;
21158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021159 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021160 )
21161 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021162 D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021163 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021164 goto done;
21165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021166 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021167 D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ',
21168 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021170 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021171 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021172 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021173 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021174}
21175
Guido van Rossum3941d972020-05-01 09:42:03 -070021176// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021177static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021178_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021179{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021180 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021181 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021182 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021183 return NULL;
21184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021185 void * _res = NULL;
21186 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021187 { // list
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021188 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021189 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021190 return NULL;
21191 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021192 D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021193 expr_ty list_var;
21194 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021195 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021196 )
21197 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021198 D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021199 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021200 goto done;
21201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021202 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021203 D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ',
21204 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021205 }
21206 { // listcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021207 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021208 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021209 return NULL;
21210 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021211 D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021212 expr_ty listcomp_var;
21213 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021214 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021215 )
21216 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021217 D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021218 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021219 goto done;
21220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021221 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021222 D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ',
21223 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021225 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021226 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021227 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021228 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021229}
21230
Guido van Rossum3941d972020-05-01 09:42:03 -070021231// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021232static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021233_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021234{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021235 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021236 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021237 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021238 return NULL;
21239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021240 void * _res = NULL;
21241 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021242 { // dict
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021243 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021244 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021245 return NULL;
21246 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021247 D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021248 expr_ty dict_var;
21249 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021250 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021251 )
21252 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021253 D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021254 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021255 goto done;
21256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021257 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021258 D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
21259 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021260 }
21261 { // set
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021262 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021263 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021264 return NULL;
21265 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021266 D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021267 expr_ty set_var;
21268 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021269 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021270 )
21271 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021272 D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021273 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021274 goto done;
21275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021276 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021277 D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
21278 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021279 }
21280 { // dictcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021281 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021282 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021283 return NULL;
21284 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021285 D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021286 expr_ty dictcomp_var;
21287 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021288 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021289 )
21290 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021291 D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021292 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021293 goto done;
21294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021295 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021296 D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
21297 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021298 }
21299 { // setcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021300 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021301 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021302 return NULL;
21303 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021304 D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021305 expr_ty setcomp_var;
21306 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021307 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021308 )
21309 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021310 D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021311 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021312 goto done;
21313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021314 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021315 D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
21316 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021318 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021319 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021320 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021321 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021322}
21323
Guido van Rossum3941d972020-05-01 09:42:03 -070021324// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021325static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021326_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021327{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021328 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021329 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021330 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021331 return NULL;
21332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021333 void *_res = NULL;
21334 int _mark = p->mark;
21335 int _start_mark = p->mark;
21336 void **_children = PyMem_Malloc(sizeof(void *));
21337 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021338 p->error_indicator = 1;
21339 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021340 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021341 return NULL;
21342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021343 ssize_t _children_capacity = 1;
21344 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021345 { // STRING
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021346 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021347 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021348 return NULL;
21349 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021350 D(fprintf(stderr, "%*c> _loop1_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021351 expr_ty string_var;
21352 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010021353 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021354 )
21355 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021356 _res = string_var;
21357 if (_n == _children_capacity) {
21358 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021359 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21360 if (!_new_children) {
21361 p->error_indicator = 1;
21362 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021363 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021364 return NULL;
21365 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021366 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021368 _children[_n++] = _res;
21369 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021371 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021372 D(fprintf(stderr, "%*c%s _loop1_99[%d-%d]: %s failed!\n", p->level, ' ',
21373 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021375 if (_n == 0 || p->error_indicator) {
21376 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021377 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021378 return NULL;
21379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021380 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21381 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021382 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021383 p->error_indicator = 1;
21384 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021385 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021386 return NULL;
21387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021388 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21389 PyMem_Free(_children);
21390 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021391 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021392 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021393}
21394
Guido van Rossum3941d972020-05-01 09:42:03 -070021395// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021396static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021397_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021398{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021399 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021400 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021401 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021402 return NULL;
21403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021404 void * _res = NULL;
21405 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021406 { // star_named_expression ',' star_named_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021407 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021408 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021409 return NULL;
21410 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021411 D(fprintf(stderr, "%*c> _tmp_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021412 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021413 expr_ty y;
21414 void *z;
21415 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021416 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021417 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021418 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021419 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021420 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021421 )
21422 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021423 D(fprintf(stderr, "%*c+ _tmp_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021424 _res = _PyPegen_seq_insert_in_front ( p , y , z );
21425 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021426 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021427 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021428 return NULL;
21429 }
21430 goto done;
21431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021432 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021433 D(fprintf(stderr, "%*c%s _tmp_100[%d-%d]: %s failed!\n", p->level, ' ',
21434 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021436 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021437 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021438 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021439 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021440}
21441
Guido van Rossum3941d972020-05-01 09:42:03 -070021442// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021443static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021444_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021445{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021446 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021447 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021448 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021449 return NULL;
21450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021451 void * _res = NULL;
21452 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021453 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021454 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021455 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021456 return NULL;
21457 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021458 D(fprintf(stderr, "%*c> _tmp_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021459 expr_ty yield_expr_var;
21460 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021461 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021462 )
21463 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021464 D(fprintf(stderr, "%*c+ _tmp_101[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021465 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021466 goto done;
21467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021468 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021469 D(fprintf(stderr, "%*c%s _tmp_101[%d-%d]: %s failed!\n", p->level, ' ',
21470 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021471 }
21472 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021473 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021474 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021475 return NULL;
21476 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021477 D(fprintf(stderr, "%*c> _tmp_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021478 expr_ty named_expression_var;
21479 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021480 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021481 )
21482 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021483 D(fprintf(stderr, "%*c+ _tmp_101[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021484 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021485 goto done;
21486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021487 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021488 D(fprintf(stderr, "%*c%s _tmp_101[%d-%d]: %s failed!\n", p->level, ' ',
21489 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021491 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021492 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021493 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021494 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021495}
21496
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021497// _loop0_103: ',' double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021498static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021499_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021500{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021501 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021502 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021503 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021504 return NULL;
21505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021506 void *_res = NULL;
21507 int _mark = p->mark;
21508 int _start_mark = p->mark;
21509 void **_children = PyMem_Malloc(sizeof(void *));
21510 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021511 p->error_indicator = 1;
21512 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021513 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021514 return NULL;
21515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021516 ssize_t _children_capacity = 1;
21517 ssize_t _n = 0;
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021518 { // ',' double_starred_kvpair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021519 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021520 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021521 return NULL;
21522 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021523 D(fprintf(stderr, "%*c> _loop0_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021524 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021525 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021526 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021527 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021528 &&
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021529 (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021530 )
21531 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021532 _res = elem;
21533 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021534 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021535 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021536 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021537 return NULL;
21538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021539 if (_n == _children_capacity) {
21540 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021541 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21542 if (!_new_children) {
21543 p->error_indicator = 1;
21544 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021545 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021546 return NULL;
21547 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021548 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021550 _children[_n++] = _res;
21551 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021553 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021554 D(fprintf(stderr, "%*c%s _loop0_103[%d-%d]: %s failed!\n", p->level, ' ',
21555 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021557 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21558 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021559 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021560 p->error_indicator = 1;
21561 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021562 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021563 return NULL;
21564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021565 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21566 PyMem_Free(_children);
21567 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021568 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021569 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021570}
21571
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021572// _gather_102: double_starred_kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021573static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021574_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021575{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021576 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021577 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021578 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021579 return NULL;
21580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021581 asdl_seq * _res = NULL;
21582 int _mark = p->mark;
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021583 { // double_starred_kvpair _loop0_103
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021584 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021585 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021586 return NULL;
21587 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021588 D(fprintf(stderr, "%*c> _gather_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_103"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021589 KeyValuePair* elem;
21590 asdl_seq * seq;
21591 if (
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021592 (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021593 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021594 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021595 )
21596 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021597 D(fprintf(stderr, "%*c+ _gather_102[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_103"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021598 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021599 goto done;
21600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021601 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021602 D(fprintf(stderr, "%*c%s _gather_102[%d-%d]: %s failed!\n", p->level, ' ',
21603 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_103"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021605 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021606 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021607 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021608 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021609}
21610
Guido van Rossum3941d972020-05-01 09:42:03 -070021611// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021612static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021613_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021614{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021615 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021616 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021617 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021618 return NULL;
21619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021620 void *_res = NULL;
21621 int _mark = p->mark;
21622 int _start_mark = p->mark;
21623 void **_children = PyMem_Malloc(sizeof(void *));
21624 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021625 p->error_indicator = 1;
21626 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021627 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021628 return NULL;
21629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021630 ssize_t _children_capacity = 1;
21631 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021632 { // for_if_clause
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021633 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021634 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021635 return NULL;
21636 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021637 D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021638 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021639 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010021640 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021641 )
21642 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021643 _res = for_if_clause_var;
21644 if (_n == _children_capacity) {
21645 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021646 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21647 if (!_new_children) {
21648 p->error_indicator = 1;
21649 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021650 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021651 return NULL;
21652 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021653 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021655 _children[_n++] = _res;
21656 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021658 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021659 D(fprintf(stderr, "%*c%s _loop1_104[%d-%d]: %s failed!\n", p->level, ' ',
21660 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021662 if (_n == 0 || p->error_indicator) {
21663 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021664 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021665 return NULL;
21666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021667 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21668 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021669 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021670 p->error_indicator = 1;
21671 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021672 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021673 return NULL;
21674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021675 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21676 PyMem_Free(_children);
21677 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021678 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021679 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021680}
21681
Guido van Rossum3941d972020-05-01 09:42:03 -070021682// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010021683static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021684_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010021685{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021686 D(p->level++);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021687 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021688 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021689 return NULL;
21690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021691 void *_res = NULL;
21692 int _mark = p->mark;
21693 int _start_mark = p->mark;
21694 void **_children = PyMem_Malloc(sizeof(void *));
21695 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021696 p->error_indicator = 1;
21697 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021698 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021699 return NULL;
21700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021701 ssize_t _children_capacity = 1;
21702 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021703 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021704 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021705 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021706 return NULL;
21707 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021708 D(fprintf(stderr, "%*c> _loop0_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010021709 void *_tmp_146_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010021710 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010021711 (_tmp_146_var = _tmp_146_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010021712 )
21713 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010021714 _res = _tmp_146_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021715 if (_n == _children_capacity) {
21716 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021717 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21718 if (!_new_children) {
21719 p->error_indicator = 1;
21720 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021721 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021722 return NULL;
21723 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021724 _children = _new_children;
Pablo Galindo2b74c832020-04-27 18:02:07 +010021725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021726 _children[_n++] = _res;
21727 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010021728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021729 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021730 D(fprintf(stderr, "%*c%s _loop0_105[%d-%d]: %s failed!\n", p->level, ' ',
21731 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
Pablo Galindo2b74c832020-04-27 18:02:07 +010021732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021733 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21734 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021735 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021736 p->error_indicator = 1;
21737 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021738 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021739 return NULL;
21740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021741 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21742 PyMem_Free(_children);
21743 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021744 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021745 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010021746}
21747
Guido van Rossum3941d972020-05-01 09:42:03 -070021748// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070021749static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021750_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070021751{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021752 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070021753 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021754 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070021755 return NULL;
21756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021757 void *_res = NULL;
21758 int _mark = p->mark;
21759 int _start_mark = p->mark;
21760 void **_children = PyMem_Malloc(sizeof(void *));
21761 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021762 p->error_indicator = 1;
21763 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021764 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021765 return NULL;
21766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021767 ssize_t _children_capacity = 1;
21768 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021769 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021770 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021771 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021772 return NULL;
21773 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021774 D(fprintf(stderr, "%*c> _loop0_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010021775 void *_tmp_147_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021776 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010021777 (_tmp_147_var = _tmp_147_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070021778 )
21779 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010021780 _res = _tmp_147_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021781 if (_n == _children_capacity) {
21782 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021783 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21784 if (!_new_children) {
21785 p->error_indicator = 1;
21786 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021787 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021788 return NULL;
21789 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021790 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021792 _children[_n++] = _res;
21793 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021795 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021796 D(fprintf(stderr, "%*c%s _loop0_106[%d-%d]: %s failed!\n", p->level, ' ',
21797 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021799 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21800 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021801 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021802 p->error_indicator = 1;
21803 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021804 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021805 return NULL;
21806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021807 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21808 PyMem_Free(_children);
21809 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021810 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021811 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021812}
21813
Guido van Rossum3941d972020-05-01 09:42:03 -070021814// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021815static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021816_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021817{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021818 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021819 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021820 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021821 return NULL;
21822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021823 void * _res = NULL;
21824 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021825 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021826 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021827 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021828 return NULL;
21829 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021830 D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021831 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021832 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021833 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021834 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021835 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021836 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021837 )
21838 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021839 D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021840 _res = c;
21841 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021842 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021843 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021844 return NULL;
21845 }
Guido van Rossumc001c092020-04-30 12:12:19 -070021846 goto done;
21847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021848 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021849 D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
21850 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' args"));
Guido van Rossumc001c092020-04-30 12:12:19 -070021851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021852 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070021853 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021854 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021855 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070021856}
21857
Guido van Rossum3941d972020-05-01 09:42:03 -070021858// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021859static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021860_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021861{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021862 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021863 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021864 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021865 return NULL;
21866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021867 void * _res = NULL;
21868 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021869 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021870 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021871 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021872 return NULL;
21873 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021874 D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021875 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021876 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021877 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021878 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021879 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021880 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021881 )
21882 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021883 D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021884 _res = c;
21885 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021886 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021887 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021888 return NULL;
21889 }
21890 goto done;
21891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021892 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021893 D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ',
21894 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' args"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021896 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021897 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021898 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021899 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021900}
21901
Guido van Rossum3941d972020-05-01 09:42:03 -070021902// _loop0_110: ',' kwarg_or_starred
21903static asdl_seq *
21904_loop0_110_rule(Parser *p)
21905{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021906 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070021907 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021908 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021909 return NULL;
21910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021911 void *_res = NULL;
21912 int _mark = p->mark;
21913 int _start_mark = p->mark;
21914 void **_children = PyMem_Malloc(sizeof(void *));
21915 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021916 p->error_indicator = 1;
21917 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021918 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021919 return NULL;
21920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021921 ssize_t _children_capacity = 1;
21922 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070021923 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021924 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021925 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021926 return NULL;
21927 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021928 D(fprintf(stderr, "%*c> _loop0_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021929 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070021930 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070021931 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021932 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070021933 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021934 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070021935 )
21936 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021937 _res = elem;
21938 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070021939 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021940 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021941 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021942 return NULL;
21943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021944 if (_n == _children_capacity) {
21945 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021946 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21947 if (!_new_children) {
21948 p->error_indicator = 1;
21949 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021950 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021951 return NULL;
21952 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021953 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070021954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021955 _children[_n++] = _res;
21956 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070021957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021958 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021959 D(fprintf(stderr, "%*c%s _loop0_110[%d-%d]: %s failed!\n", p->level, ' ',
21960 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
Guido van Rossum3941d972020-05-01 09:42:03 -070021961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021962 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21963 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021964 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021965 p->error_indicator = 1;
21966 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021967 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021968 return NULL;
21969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021970 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21971 PyMem_Free(_children);
21972 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021973 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021974 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070021975}
21976
21977// _gather_109: kwarg_or_starred _loop0_110
21978static asdl_seq *
21979_gather_109_rule(Parser *p)
21980{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021981 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070021982 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021983 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021984 return NULL;
21985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021986 asdl_seq * _res = NULL;
21987 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070021988 { // kwarg_or_starred _loop0_110
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021989 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021990 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021991 return NULL;
21992 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021993 D(fprintf(stderr, "%*c> _gather_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_110"));
Guido van Rossum3941d972020-05-01 09:42:03 -070021994 KeywordOrStarred* elem;
21995 asdl_seq * seq;
21996 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021997 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070021998 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021999 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070022000 )
22001 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022002 D(fprintf(stderr, "%*c+ _gather_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_110"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022003 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070022004 goto done;
22005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022006 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022007 D(fprintf(stderr, "%*c%s _gather_109[%d-%d]: %s failed!\n", p->level, ' ',
22008 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_110"));
Guido van Rossum3941d972020-05-01 09:42:03 -070022009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022010 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070022011 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022012 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022013 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070022014}
22015
22016// _loop0_112: ',' kwarg_or_double_starred
22017static asdl_seq *
22018_loop0_112_rule(Parser *p)
22019{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022020 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070022021 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022022 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022023 return NULL;
22024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022025 void *_res = NULL;
22026 int _mark = p->mark;
22027 int _start_mark = p->mark;
22028 void **_children = PyMem_Malloc(sizeof(void *));
22029 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022030 p->error_indicator = 1;
22031 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022032 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022033 return NULL;
22034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022035 ssize_t _children_capacity = 1;
22036 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070022037 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022038 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022039 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022040 return NULL;
22041 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022042 D(fprintf(stderr, "%*c> _loop0_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022043 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070022044 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070022045 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022046 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070022047 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022048 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070022049 )
22050 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022051 _res = elem;
22052 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070022053 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022054 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022055 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022056 return NULL;
22057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022058 if (_n == _children_capacity) {
22059 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022060 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22061 if (!_new_children) {
22062 p->error_indicator = 1;
22063 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022064 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022065 return NULL;
22066 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022067 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070022068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022069 _children[_n++] = _res;
22070 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022072 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022073 D(fprintf(stderr, "%*c%s _loop0_112[%d-%d]: %s failed!\n", p->level, ' ',
22074 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
Guido van Rossum3941d972020-05-01 09:42:03 -070022075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022076 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22077 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022078 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022079 p->error_indicator = 1;
22080 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022081 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022082 return NULL;
22083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022084 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22085 PyMem_Free(_children);
22086 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022087 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022088 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070022089}
22090
22091// _gather_111: kwarg_or_double_starred _loop0_112
22092static asdl_seq *
22093_gather_111_rule(Parser *p)
22094{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022095 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070022096 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022097 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022098 return NULL;
22099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022100 asdl_seq * _res = NULL;
22101 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022102 { // kwarg_or_double_starred _loop0_112
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022103 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022104 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022105 return NULL;
22106 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022107 D(fprintf(stderr, "%*c> _gather_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_112"));
Guido van Rossum3941d972020-05-01 09:42:03 -070022108 KeywordOrStarred* elem;
22109 asdl_seq * seq;
22110 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022111 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070022112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022113 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070022114 )
22115 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022116 D(fprintf(stderr, "%*c+ _gather_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_112"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022117 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070022118 goto done;
22119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022120 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022121 D(fprintf(stderr, "%*c%s _gather_111[%d-%d]: %s failed!\n", p->level, ' ',
22122 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_112"));
Guido van Rossum3941d972020-05-01 09:42:03 -070022123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022124 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070022125 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022126 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022127 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070022128}
22129
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022130// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010022131static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022132_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022133{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022134 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022135 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022136 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022137 return NULL;
22138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022139 void *_res = NULL;
22140 int _mark = p->mark;
22141 int _start_mark = p->mark;
22142 void **_children = PyMem_Malloc(sizeof(void *));
22143 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022144 p->error_indicator = 1;
22145 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022146 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022147 return NULL;
22148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022149 ssize_t _children_capacity = 1;
22150 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070022151 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022152 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022153 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022154 return NULL;
22155 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022156 D(fprintf(stderr, "%*c> _loop0_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022157 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070022158 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070022159 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022160 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070022161 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022162 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022163 )
22164 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022165 _res = elem;
22166 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070022167 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022168 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022169 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022170 return NULL;
22171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022172 if (_n == _children_capacity) {
22173 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022174 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22175 if (!_new_children) {
22176 p->error_indicator = 1;
22177 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022178 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022179 return NULL;
22180 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022181 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070022182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022183 _children[_n++] = _res;
22184 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070022185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022186 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022187 D(fprintf(stderr, "%*c%s _loop0_114[%d-%d]: %s failed!\n", p->level, ' ',
22188 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022190 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22191 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022192 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022193 p->error_indicator = 1;
22194 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022195 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022196 return NULL;
22197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022198 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22199 PyMem_Free(_children);
22200 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022201 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022202 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070022203}
22204
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022205// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070022206static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022207_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070022208{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022209 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070022210 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022211 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022212 return NULL;
22213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022214 asdl_seq * _res = NULL;
22215 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022216 { // kwarg_or_starred _loop0_114
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022217 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022218 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022219 return NULL;
22220 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022221 D(fprintf(stderr, "%*c> _gather_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_114"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022222 KeywordOrStarred* elem;
22223 asdl_seq * seq;
22224 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022225 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022226 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022227 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070022228 )
22229 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022230 D(fprintf(stderr, "%*c+ _gather_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_114"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022231 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070022232 goto done;
22233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022234 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022235 D(fprintf(stderr, "%*c%s _gather_113[%d-%d]: %s failed!\n", p->level, ' ',
22236 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_114"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022238 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070022239 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022240 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022241 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070022242}
22243
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022244// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022245static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022246_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070022247{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022248 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070022249 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022250 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022251 return NULL;
22252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022253 void *_res = NULL;
22254 int _mark = p->mark;
22255 int _start_mark = p->mark;
22256 void **_children = PyMem_Malloc(sizeof(void *));
22257 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022258 p->error_indicator = 1;
22259 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022260 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022261 return NULL;
22262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022263 ssize_t _children_capacity = 1;
22264 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070022265 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022266 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022267 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022268 return NULL;
22269 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022270 D(fprintf(stderr, "%*c> _loop0_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022271 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070022272 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070022273 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022274 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070022275 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022276 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022277 )
22278 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022279 _res = elem;
22280 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070022281 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022282 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022283 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022284 return NULL;
22285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022286 if (_n == _children_capacity) {
22287 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022288 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22289 if (!_new_children) {
22290 p->error_indicator = 1;
22291 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022292 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022293 return NULL;
22294 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022295 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070022296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022297 _children[_n++] = _res;
22298 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070022299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022300 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022301 D(fprintf(stderr, "%*c%s _loop0_116[%d-%d]: %s failed!\n", p->level, ' ',
22302 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022304 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22305 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022306 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022307 p->error_indicator = 1;
22308 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022309 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022310 return NULL;
22311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022312 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22313 PyMem_Free(_children);
22314 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022315 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022316 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070022317}
22318
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022319// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070022320static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022321_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070022322{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022323 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070022324 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022325 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022326 return NULL;
22327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022328 asdl_seq * _res = NULL;
22329 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022330 { // kwarg_or_double_starred _loop0_116
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022331 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022332 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022333 return NULL;
22334 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022335 D(fprintf(stderr, "%*c> _gather_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_116"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022336 KeywordOrStarred* elem;
22337 asdl_seq * seq;
22338 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022339 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022340 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022341 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070022342 )
22343 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022344 D(fprintf(stderr, "%*c+ _gather_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_116"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022345 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070022346 goto done;
22347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022348 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022349 D(fprintf(stderr, "%*c%s _gather_115[%d-%d]: %s failed!\n", p->level, ' ',
22350 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_116"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022352 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070022353 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022354 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022355 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070022356}
22357
Guido van Rossum3941d972020-05-01 09:42:03 -070022358// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070022359static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022360_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022361{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022362 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022363 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022364 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022365 return NULL;
22366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022367 void *_res = NULL;
22368 int _mark = p->mark;
22369 int _start_mark = p->mark;
22370 void **_children = PyMem_Malloc(sizeof(void *));
22371 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022372 p->error_indicator = 1;
22373 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022374 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022375 return NULL;
22376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022377 ssize_t _children_capacity = 1;
22378 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022379 { // (',' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022380 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022381 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022382 return NULL;
22383 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022384 D(fprintf(stderr, "%*c> _loop0_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010022385 void *_tmp_148_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022386 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010022387 (_tmp_148_var = _tmp_148_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022388 )
22389 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010022390 _res = _tmp_148_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022391 if (_n == _children_capacity) {
22392 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022393 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22394 if (!_new_children) {
22395 p->error_indicator = 1;
22396 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022397 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022398 return NULL;
22399 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022400 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022402 _children[_n++] = _res;
22403 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022405 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022406 D(fprintf(stderr, "%*c%s _loop0_117[%d-%d]: %s failed!\n", p->level, ' ',
22407 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022409 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22410 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022411 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022412 p->error_indicator = 1;
22413 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022414 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022415 return NULL;
22416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022417 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22418 PyMem_Free(_children);
22419 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022420 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022421 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022422}
22423
Guido van Rossum3941d972020-05-01 09:42:03 -070022424// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022425static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022426_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070022427{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022428 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070022429 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022430 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022431 return NULL;
22432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022433 void *_res = NULL;
22434 int _mark = p->mark;
22435 int _start_mark = p->mark;
22436 void **_children = PyMem_Malloc(sizeof(void *));
22437 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022438 p->error_indicator = 1;
22439 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022440 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022441 return NULL;
22442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022443 ssize_t _children_capacity = 1;
22444 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022445 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022446 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022447 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022448 return NULL;
22449 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022450 D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022451 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022452 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022453 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022454 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022455 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022456 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022457 )
22458 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022459 _res = elem;
22460 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022461 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022462 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022463 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022464 return NULL;
22465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022466 if (_n == _children_capacity) {
22467 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022468 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22469 if (!_new_children) {
22470 p->error_indicator = 1;
22471 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022472 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022473 return NULL;
22474 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022475 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022477 _children[_n++] = _res;
22478 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022480 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022481 D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ',
22482 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022484 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22485 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022486 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022487 p->error_indicator = 1;
22488 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022489 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022490 return NULL;
22491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022492 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22493 PyMem_Free(_children);
22494 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022495 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022496 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022497}
22498
Guido van Rossum3941d972020-05-01 09:42:03 -070022499// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022500static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022501_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022502{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022503 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022504 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022505 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022506 return NULL;
22507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022508 asdl_seq * _res = NULL;
22509 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022510 { // star_target _loop0_119
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022511 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022512 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022513 return NULL;
22514 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022515 D(fprintf(stderr, "%*c> _gather_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_119"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022516 expr_ty elem;
22517 asdl_seq * seq;
22518 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022519 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022520 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022521 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022522 )
22523 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022524 D(fprintf(stderr, "%*c+ _gather_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_119"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022525 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022526 goto done;
22527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022528 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022529 D(fprintf(stderr, "%*c%s _gather_118[%d-%d]: %s failed!\n", p->level, ' ',
22530 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_119"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022532 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022533 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022534 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022535 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022536}
22537
Guido van Rossum3941d972020-05-01 09:42:03 -070022538// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022539static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070022540_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022541{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022542 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022543 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022544 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022545 return NULL;
22546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022547 void * _res = NULL;
22548 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022549 { // !'*' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022550 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022551 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022552 return NULL;
22553 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022554 D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022555 expr_ty star_target_var;
22556 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022557 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022558 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022559 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022560 )
22561 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022562 D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022563 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022564 goto done;
22565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022566 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022567 D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
22568 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022570 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022571 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022572 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022573 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022574}
22575
Guido van Rossum3941d972020-05-01 09:42:03 -070022576// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022577static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022578_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022579{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022580 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022581 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022582 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022583 return NULL;
22584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022585 void *_res = NULL;
22586 int _mark = p->mark;
22587 int _start_mark = p->mark;
22588 void **_children = PyMem_Malloc(sizeof(void *));
22589 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022590 p->error_indicator = 1;
22591 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022592 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022593 return NULL;
22594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022595 ssize_t _children_capacity = 1;
22596 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022597 { // ',' del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022598 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022599 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022600 return NULL;
22601 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022602 D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022603 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022604 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022605 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022606 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022607 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022608 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022609 )
22610 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022611 _res = elem;
22612 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022613 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022614 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022615 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022616 return NULL;
22617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022618 if (_n == _children_capacity) {
22619 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022620 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22621 if (!_new_children) {
22622 p->error_indicator = 1;
22623 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022624 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022625 return NULL;
22626 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022627 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022629 _children[_n++] = _res;
22630 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022632 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022633 D(fprintf(stderr, "%*c%s _loop0_122[%d-%d]: %s failed!\n", p->level, ' ',
22634 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022636 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22637 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022638 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022639 p->error_indicator = 1;
22640 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022641 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022642 return NULL;
22643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022644 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22645 PyMem_Free(_children);
22646 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022647 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022648 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022649}
22650
Guido van Rossum3941d972020-05-01 09:42:03 -070022651// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022652static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022653_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022654{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022655 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022656 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022657 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022658 return NULL;
22659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022660 asdl_seq * _res = NULL;
22661 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022662 { // del_target _loop0_122
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022663 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022664 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022665 return NULL;
22666 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022667 D(fprintf(stderr, "%*c> _gather_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_122"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022668 expr_ty elem;
22669 asdl_seq * seq;
22670 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022671 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022672 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022673 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022674 )
22675 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022676 D(fprintf(stderr, "%*c+ _gather_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_122"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022677 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022678 goto done;
22679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022680 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022681 D(fprintf(stderr, "%*c%s _gather_121[%d-%d]: %s failed!\n", p->level, ' ',
22682 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_122"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022684 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022685 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022686 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022687 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022688}
22689
Guido van Rossum3941d972020-05-01 09:42:03 -070022690// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022691static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022692_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022693{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022694 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022695 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022696 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022697 return NULL;
22698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022699 void *_res = NULL;
22700 int _mark = p->mark;
22701 int _start_mark = p->mark;
22702 void **_children = PyMem_Malloc(sizeof(void *));
22703 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022704 p->error_indicator = 1;
22705 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022706 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022707 return NULL;
22708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022709 ssize_t _children_capacity = 1;
22710 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022711 { // ',' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022712 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022713 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022714 return NULL;
22715 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022716 D(fprintf(stderr, "%*c> _loop0_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022717 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022718 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022719 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022720 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022721 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022722 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022723 )
22724 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022725 _res = elem;
22726 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022727 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022728 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022729 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022730 return NULL;
22731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022732 if (_n == _children_capacity) {
22733 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022734 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22735 if (!_new_children) {
22736 p->error_indicator = 1;
22737 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022738 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022739 return NULL;
22740 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022741 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022743 _children[_n++] = _res;
22744 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022746 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022747 D(fprintf(stderr, "%*c%s _loop0_124[%d-%d]: %s failed!\n", p->level, ' ',
22748 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022750 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22751 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022752 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022753 p->error_indicator = 1;
22754 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022755 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022756 return NULL;
22757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022758 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22759 PyMem_Free(_children);
22760 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022761 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022762 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022763}
22764
Guido van Rossum3941d972020-05-01 09:42:03 -070022765// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022766static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022767_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022768{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022769 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022770 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022771 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022772 return NULL;
22773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022774 asdl_seq * _res = NULL;
22775 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022776 { // target _loop0_124
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022777 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022778 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022779 return NULL;
22780 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022781 D(fprintf(stderr, "%*c> _gather_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target _loop0_124"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022782 expr_ty elem;
22783 asdl_seq * seq;
22784 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022785 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022786 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022787 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022788 )
22789 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022790 D(fprintf(stderr, "%*c+ _gather_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target _loop0_124"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022791 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022792 goto done;
22793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022794 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022795 D(fprintf(stderr, "%*c%s _gather_123[%d-%d]: %s failed!\n", p->level, ' ',
22796 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target _loop0_124"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022798 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022799 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022800 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022801 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022802}
22803
Guido van Rossum3941d972020-05-01 09:42:03 -070022804// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022805static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070022806_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022807{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022808 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022809 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022810 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022811 return NULL;
22812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022813 void * _res = NULL;
22814 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022815 { // args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022816 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022817 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022818 return NULL;
22819 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022820 D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022821 expr_ty args_var;
22822 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022823 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022824 )
22825 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022826 D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022827 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022828 goto done;
22829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022830 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022831 D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
22832 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022833 }
22834 { // expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022835 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022836 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022837 return NULL;
22838 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022839 D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022840 expr_ty expression_var;
22841 asdl_seq* for_if_clauses_var;
22842 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022843 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022844 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022845 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022846 )
22847 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022848 D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022849 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022850 goto done;
22851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022852 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022853 D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
22854 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022856 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022857 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022858 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022859 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022860}
22861
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022862// _loop0_126: star_named_expressions
22863static asdl_seq *
22864_loop0_126_rule(Parser *p)
22865{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022866 D(p->level++);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022867 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022868 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022869 return NULL;
22870 }
22871 void *_res = NULL;
22872 int _mark = p->mark;
22873 int _start_mark = p->mark;
22874 void **_children = PyMem_Malloc(sizeof(void *));
22875 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022876 p->error_indicator = 1;
22877 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022878 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022879 return NULL;
22880 }
22881 ssize_t _children_capacity = 1;
22882 ssize_t _n = 0;
22883 { // star_named_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022884 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022885 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022886 return NULL;
22887 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022888 D(fprintf(stderr, "%*c> _loop0_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022889 asdl_seq* star_named_expressions_var;
22890 while (
22891 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
22892 )
22893 {
22894 _res = star_named_expressions_var;
22895 if (_n == _children_capacity) {
22896 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022897 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22898 if (!_new_children) {
22899 p->error_indicator = 1;
22900 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022901 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022902 return NULL;
22903 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022904 _children = _new_children;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022905 }
22906 _children[_n++] = _res;
22907 _mark = p->mark;
22908 }
22909 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022910 D(fprintf(stderr, "%*c%s _loop0_126[%d-%d]: %s failed!\n", p->level, ' ',
22911 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022912 }
22913 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22914 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022915 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022916 p->error_indicator = 1;
22917 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022918 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022919 return NULL;
22920 }
22921 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22922 PyMem_Free(_children);
22923 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022924 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022925 return _seq;
22926}
22927
22928// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022929static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022930_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022931{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022932 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022933 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022934 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022935 return NULL;
22936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022937 void * _res = NULL;
22938 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022939 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022940 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022941 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022942 return NULL;
22943 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022944 D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022945 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022946 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022947 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022948 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022950 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022951 )
22952 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022953 D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022954 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022955 goto done;
22956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022957 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022958 D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
22959 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022961 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022962 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022963 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022964 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022965}
22966
Pablo Galindo9f495902020-06-08 02:57:00 +010022967// _loop0_128: (star_targets '=')
22968static asdl_seq *
22969_loop0_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022970{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022971 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022972 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022973 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022974 return NULL;
22975 }
Pablo Galindo9f495902020-06-08 02:57:00 +010022976 void *_res = NULL;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022977 int _mark = p->mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010022978 int _start_mark = p->mark;
22979 void **_children = PyMem_Malloc(sizeof(void *));
22980 if (!_children) {
22981 p->error_indicator = 1;
22982 PyErr_NoMemory();
22983 D(p->level--);
22984 return NULL;
22985 }
22986 ssize_t _children_capacity = 1;
22987 ssize_t _n = 0;
22988 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022989 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022990 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022991 return NULL;
22992 }
Pablo Galindo9f495902020-06-08 02:57:00 +010022993 D(fprintf(stderr, "%*c> _loop0_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010022994 void *_tmp_149_var;
Pablo Galindo9f495902020-06-08 02:57:00 +010022995 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010022996 (_tmp_149_var = _tmp_149_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022997 )
22998 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010022999 _res = _tmp_149_var;
Pablo Galindo9f495902020-06-08 02:57:00 +010023000 if (_n == _children_capacity) {
23001 _children_capacity *= 2;
23002 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23003 if (!_new_children) {
23004 p->error_indicator = 1;
23005 PyErr_NoMemory();
23006 D(p->level--);
23007 return NULL;
23008 }
23009 _children = _new_children;
23010 }
23011 _children[_n++] = _res;
23012 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023014 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023015 D(fprintf(stderr, "%*c%s _loop0_128[%d-%d]: %s failed!\n", p->level, ' ',
23016 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023017 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023018 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
23019 if (!_seq) {
23020 PyMem_Free(_children);
23021 p->error_indicator = 1;
23022 PyErr_NoMemory();
23023 D(p->level--);
23024 return NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023025 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023026 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
23027 PyMem_Free(_children);
23028 _PyPegen_insert_memo(p, _start_mark, _loop0_128_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010023029 D(p->level--);
Pablo Galindo9f495902020-06-08 02:57:00 +010023030 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023031}
23032
Pablo Galindo9f495902020-06-08 02:57:00 +010023033// _loop0_129: (star_targets '=')
23034static asdl_seq *
23035_loop0_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023036{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023037 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023038 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023039 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023040 return NULL;
23041 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023042 void *_res = NULL;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023043 int _mark = p->mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023044 int _start_mark = p->mark;
23045 void **_children = PyMem_Malloc(sizeof(void *));
23046 if (!_children) {
23047 p->error_indicator = 1;
23048 PyErr_NoMemory();
23049 D(p->level--);
23050 return NULL;
23051 }
23052 ssize_t _children_capacity = 1;
23053 ssize_t _n = 0;
23054 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023055 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023056 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023057 return NULL;
23058 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023059 D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010023060 void *_tmp_150_var;
Pablo Galindo9f495902020-06-08 02:57:00 +010023061 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010023062 (_tmp_150_var = _tmp_150_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023063 )
23064 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023065 _res = _tmp_150_var;
Pablo Galindo9f495902020-06-08 02:57:00 +010023066 if (_n == _children_capacity) {
23067 _children_capacity *= 2;
23068 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23069 if (!_new_children) {
23070 p->error_indicator = 1;
23071 PyErr_NoMemory();
23072 D(p->level--);
23073 return NULL;
23074 }
23075 _children = _new_children;
23076 }
23077 _children[_n++] = _res;
23078 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023080 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023081 D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ',
23082 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023083 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023084 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
23085 if (!_seq) {
23086 PyMem_Free(_children);
23087 p->error_indicator = 1;
23088 PyErr_NoMemory();
23089 D(p->level--);
23090 return NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023091 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023092 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
23093 PyMem_Free(_children);
23094 _PyPegen_insert_memo(p, _start_mark, _loop0_129_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010023095 D(p->level--);
Pablo Galindo9f495902020-06-08 02:57:00 +010023096 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023097}
23098
Pablo Galindo9f495902020-06-08 02:57:00 +010023099// _tmp_130: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023100static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030023101_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023102{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023103 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023104 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023105 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023106 return NULL;
23107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023108 void * _res = NULL;
23109 int _mark = p->mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023110 { // yield_expr
23111 if (p->error_indicator) {
23112 D(p->level--);
23113 return NULL;
23114 }
23115 D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23116 expr_ty yield_expr_var;
23117 if (
23118 (yield_expr_var = yield_expr_rule(p)) // yield_expr
23119 )
23120 {
23121 D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23122 _res = yield_expr_var;
23123 goto done;
23124 }
23125 p->mark = _mark;
23126 D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ',
23127 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
23128 }
23129 { // star_expressions
23130 if (p->error_indicator) {
23131 D(p->level--);
23132 return NULL;
23133 }
23134 D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
23135 expr_ty star_expressions_var;
23136 if (
23137 (star_expressions_var = star_expressions_rule(p)) // star_expressions
23138 )
23139 {
23140 D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
23141 _res = star_expressions_var;
23142 goto done;
23143 }
23144 p->mark = _mark;
23145 D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ',
23146 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
23147 }
23148 _res = NULL;
23149 done:
23150 D(p->level--);
23151 return _res;
23152}
23153
23154// _tmp_131: '[' | '(' | '{'
23155static void *
23156_tmp_131_rule(Parser *p)
23157{
23158 D(p->level++);
23159 if (p->error_indicator) {
23160 D(p->level--);
23161 return NULL;
23162 }
23163 void * _res = NULL;
23164 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023165 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023166 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023167 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023168 return NULL;
23169 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023170 D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023171 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023172 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023173 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023174 )
23175 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023176 D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023177 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023178 goto done;
23179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023180 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023181 D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023182 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023183 }
23184 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023185 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023186 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023187 return NULL;
23188 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023189 D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023190 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023191 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023192 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023193 )
23194 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023195 D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023196 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023197 goto done;
23198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023199 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023200 D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023201 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023202 }
23203 { // '{'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023204 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023205 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023206 return NULL;
23207 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023208 D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023209 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023210 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023211 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023212 )
23213 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023214 D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023215 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023216 goto done;
23217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023218 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023219 D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023220 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023222 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023223 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023224 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023225 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023226}
23227
Pablo Galindo9f495902020-06-08 02:57:00 +010023228// _loop0_132: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070023229static asdl_seq *
Pablo Galindo9f495902020-06-08 02:57:00 +010023230_loop0_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023231{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023232 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023233 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023234 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023235 return NULL;
23236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023237 void *_res = NULL;
23238 int _mark = p->mark;
23239 int _start_mark = p->mark;
23240 void **_children = PyMem_Malloc(sizeof(void *));
23241 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030023242 p->error_indicator = 1;
23243 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010023244 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070023245 return NULL;
23246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023247 ssize_t _children_capacity = 1;
23248 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070023249 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023250 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023251 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023252 return NULL;
23253 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023254 D(fprintf(stderr, "%*c> _loop0_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070023255 arg_ty param_no_default_var;
23256 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010023257 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023258 )
23259 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023260 _res = param_no_default_var;
23261 if (_n == _children_capacity) {
23262 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030023263 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23264 if (!_new_children) {
23265 p->error_indicator = 1;
23266 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010023267 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070023268 return NULL;
23269 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030023270 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070023271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023272 _children[_n++] = _res;
23273 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023275 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023276 D(fprintf(stderr, "%*c%s _loop0_132[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023277 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023279 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
23280 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023281 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030023282 p->error_indicator = 1;
23283 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010023284 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070023285 return NULL;
23286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023287 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
23288 PyMem_Free(_children);
Pablo Galindo9f495902020-06-08 02:57:00 +010023289 _PyPegen_insert_memo(p, _start_mark, _loop0_132_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010023290 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023291 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023292}
23293
Pablo Galindo9f495902020-06-08 02:57:00 +010023294// _tmp_133: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023295static void *
Pablo Galindo9f495902020-06-08 02:57:00 +010023296_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023297{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023298 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023299 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023300 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023301 return NULL;
23302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023303 void * _res = NULL;
23304 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023305 { // slash_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023306 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023307 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023308 return NULL;
23309 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023310 D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023311 SlashWithDefault* slash_with_default_var;
23312 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010023313 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023314 )
23315 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023316 D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023317 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023318 goto done;
23319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023320 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023321 D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023322 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023323 }
Guido van Rossumc001c092020-04-30 12:12:19 -070023324 { // param_with_default+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023325 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023326 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023327 return NULL;
23328 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023329 D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010023330 asdl_seq * _loop1_151_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023331 if (
Pablo Galindoc6483c92020-06-10 14:07:06 +010023332 (_loop1_151_var = _loop1_151_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023333 )
23334 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023335 D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010023336 _res = _loop1_151_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023337 goto done;
23338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023339 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023340 D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023341 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023343 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023344 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023345 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023346 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023347}
23348
Pablo Galindoc6483c92020-06-10 14:07:06 +010023349// _loop0_134: lambda_param_no_default
23350static asdl_seq *
23351_loop0_134_rule(Parser *p)
23352{
23353 D(p->level++);
23354 if (p->error_indicator) {
23355 D(p->level--);
23356 return NULL;
23357 }
23358 void *_res = NULL;
23359 int _mark = p->mark;
23360 int _start_mark = p->mark;
23361 void **_children = PyMem_Malloc(sizeof(void *));
23362 if (!_children) {
23363 p->error_indicator = 1;
23364 PyErr_NoMemory();
23365 D(p->level--);
23366 return NULL;
23367 }
23368 ssize_t _children_capacity = 1;
23369 ssize_t _n = 0;
23370 { // lambda_param_no_default
23371 if (p->error_indicator) {
23372 D(p->level--);
23373 return NULL;
23374 }
23375 D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
23376 arg_ty lambda_param_no_default_var;
23377 while (
23378 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
23379 )
23380 {
23381 _res = lambda_param_no_default_var;
23382 if (_n == _children_capacity) {
23383 _children_capacity *= 2;
23384 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23385 if (!_new_children) {
23386 p->error_indicator = 1;
23387 PyErr_NoMemory();
23388 D(p->level--);
23389 return NULL;
23390 }
23391 _children = _new_children;
23392 }
23393 _children[_n++] = _res;
23394 _mark = p->mark;
23395 }
23396 p->mark = _mark;
23397 D(fprintf(stderr, "%*c%s _loop0_134[%d-%d]: %s failed!\n", p->level, ' ',
23398 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
23399 }
23400 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
23401 if (!_seq) {
23402 PyMem_Free(_children);
23403 p->error_indicator = 1;
23404 PyErr_NoMemory();
23405 D(p->level--);
23406 return NULL;
23407 }
23408 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
23409 PyMem_Free(_children);
23410 _PyPegen_insert_memo(p, _start_mark, _loop0_134_type, _seq);
23411 D(p->level--);
23412 return _seq;
23413}
23414
23415// _tmp_135: lambda_slash_with_default | lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023416static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023417_tmp_135_rule(Parser *p)
23418{
23419 D(p->level++);
23420 if (p->error_indicator) {
23421 D(p->level--);
23422 return NULL;
23423 }
23424 void * _res = NULL;
23425 int _mark = p->mark;
23426 { // lambda_slash_with_default
23427 if (p->error_indicator) {
23428 D(p->level--);
23429 return NULL;
23430 }
23431 D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23432 SlashWithDefault* lambda_slash_with_default_var;
23433 if (
23434 (lambda_slash_with_default_var = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
23435 )
23436 {
23437 D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23438 _res = lambda_slash_with_default_var;
23439 goto done;
23440 }
23441 p->mark = _mark;
23442 D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ',
23443 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
23444 }
23445 { // lambda_param_with_default+
23446 if (p->error_indicator) {
23447 D(p->level--);
23448 return NULL;
23449 }
23450 D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23451 asdl_seq * _loop1_152_var;
23452 if (
23453 (_loop1_152_var = _loop1_152_rule(p)) // lambda_param_with_default+
23454 )
23455 {
23456 D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23457 _res = _loop1_152_var;
23458 goto done;
23459 }
23460 p->mark = _mark;
23461 D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ',
23462 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
23463 }
23464 _res = NULL;
23465 done:
23466 D(p->level--);
23467 return _res;
23468}
23469
23470// _tmp_136: ')' | ',' (')' | '**')
23471static void *
23472_tmp_136_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023473{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023474 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023475 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023476 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023477 return NULL;
23478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023479 void * _res = NULL;
23480 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023481 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023482 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023483 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023484 return NULL;
23485 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023486 D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023487 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023488 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023489 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023490 )
23491 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023492 D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023493 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023494 goto done;
23495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023496 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023497 D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023498 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023499 }
23500 { // ',' (')' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023501 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023502 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023503 return NULL;
23504 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023505 D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023506 Token * _literal;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023507 void *_tmp_153_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023508 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023509 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023510 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +010023511 (_tmp_153_var = _tmp_153_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023512 )
23513 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023514 D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
23515 _res = _PyPegen_dummy_name(p, _literal, _tmp_153_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023516 goto done;
23517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023518 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023519 D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023520 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023522 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023523 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023524 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023525 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023526}
23527
Pablo Galindoc6483c92020-06-10 14:07:06 +010023528// _tmp_137: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023529static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023530_tmp_137_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023531{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023532 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023533 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023534 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023535 return NULL;
23536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023537 void * _res = NULL;
23538 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023539 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023540 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023541 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023542 return NULL;
23543 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023544 D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023545 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023546 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023547 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023548 )
23549 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023550 D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023551 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023552 goto done;
23553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023554 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023555 D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023556 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023557 }
23558 { // ',' (':' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023559 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023560 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023561 return NULL;
23562 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023563 D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023564 Token * _literal;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023565 void *_tmp_154_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023566 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023567 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023568 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +010023569 (_tmp_154_var = _tmp_154_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023570 )
23571 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023572 D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
23573 _res = _PyPegen_dummy_name(p, _literal, _tmp_154_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023574 goto done;
23575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023576 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023577 D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023578 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023580 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023581 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023582 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023583 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023584}
23585
Pablo Galindoc6483c92020-06-10 14:07:06 +010023586// _tmp_138: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023587static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023588_tmp_138_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023589{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023590 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023591 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023592 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023593 return NULL;
23594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023595 void * _res = NULL;
23596 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023597 { // star_targets '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023598 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023599 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023600 return NULL;
23601 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023602 D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023603 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023604 expr_ty z;
23605 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010023606 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023607 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023608 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023609 )
23610 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023611 D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023612 _res = z;
23613 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023614 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023615 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023616 return NULL;
23617 }
23618 goto done;
23619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023620 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023621 D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023622 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023624 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023625 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023626 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023627 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023628}
23629
Pablo Galindoc6483c92020-06-10 14:07:06 +010023630// _tmp_139: '.' | '...'
Pablo Galindo9f495902020-06-08 02:57:00 +010023631static void *
23632_tmp_139_rule(Parser *p)
23633{
23634 D(p->level++);
23635 if (p->error_indicator) {
23636 D(p->level--);
23637 return NULL;
23638 }
23639 void * _res = NULL;
23640 int _mark = p->mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023641 { // '.'
23642 if (p->error_indicator) {
23643 D(p->level--);
23644 return NULL;
23645 }
23646 D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
23647 Token * _literal;
23648 if (
23649 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
23650 )
23651 {
23652 D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
23653 _res = _literal;
23654 goto done;
23655 }
23656 p->mark = _mark;
23657 D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ',
23658 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
23659 }
23660 { // '...'
23661 if (p->error_indicator) {
23662 D(p->level--);
23663 return NULL;
23664 }
23665 D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
23666 Token * _literal;
23667 if (
23668 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
23669 )
23670 {
23671 D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
23672 _res = _literal;
23673 goto done;
23674 }
23675 p->mark = _mark;
23676 D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ',
23677 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
23678 }
23679 _res = NULL;
23680 done:
23681 D(p->level--);
23682 return _res;
23683}
23684
23685// _tmp_140: '.' | '...'
23686static void *
23687_tmp_140_rule(Parser *p)
23688{
23689 D(p->level++);
23690 if (p->error_indicator) {
23691 D(p->level--);
23692 return NULL;
23693 }
23694 void * _res = NULL;
23695 int _mark = p->mark;
23696 { // '.'
23697 if (p->error_indicator) {
23698 D(p->level--);
23699 return NULL;
23700 }
23701 D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
23702 Token * _literal;
23703 if (
23704 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
23705 )
23706 {
23707 D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
23708 _res = _literal;
23709 goto done;
23710 }
23711 p->mark = _mark;
23712 D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ',
23713 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
23714 }
23715 { // '...'
23716 if (p->error_indicator) {
23717 D(p->level--);
23718 return NULL;
23719 }
23720 D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
23721 Token * _literal;
23722 if (
23723 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
23724 )
23725 {
23726 D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
23727 _res = _literal;
23728 goto done;
23729 }
23730 p->mark = _mark;
23731 D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ',
23732 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
23733 }
23734 _res = NULL;
23735 done:
23736 D(p->level--);
23737 return _res;
23738}
23739
23740// _tmp_141: '@' named_expression NEWLINE
23741static void *
23742_tmp_141_rule(Parser *p)
23743{
23744 D(p->level++);
23745 if (p->error_indicator) {
23746 D(p->level--);
23747 return NULL;
23748 }
23749 void * _res = NULL;
23750 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023751 { // '@' named_expression NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023752 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023753 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023754 return NULL;
23755 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023756 D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023757 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023758 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010023759 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023760 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023761 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023762 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023763 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023764 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023765 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023766 )
23767 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023768 D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023769 _res = f;
23770 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023771 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023772 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023773 return NULL;
23774 }
23775 goto done;
23776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023777 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023778 D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023779 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023781 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023782 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023783 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023784 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023785}
23786
Pablo Galindoc6483c92020-06-10 14:07:06 +010023787// _tmp_142: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023788static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023789_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023790{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023791 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023792 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023793 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023794 return NULL;
23795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023796 void * _res = NULL;
23797 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023798 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023799 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023800 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023801 return NULL;
23802 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023803 D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023804 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023805 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023806 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023807 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023809 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023810 )
23811 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023812 D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023813 _res = c;
23814 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023815 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023816 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023817 return NULL;
23818 }
23819 goto done;
23820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023821 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023822 D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023823 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023825 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023826 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023827 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023828 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023829}
23830
Pablo Galindoc6483c92020-06-10 14:07:06 +010023831// _tmp_143: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023832static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023833_tmp_143_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023834{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023835 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023836 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023837 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023838 return NULL;
23839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023840 void * _res = NULL;
23841 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023842 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023843 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023844 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023845 return NULL;
23846 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023847 D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023848 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023849 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023850 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023851 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023852 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023853 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023854 )
23855 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023856 D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023857 _res = c;
23858 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023859 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023860 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023861 return NULL;
23862 }
23863 goto done;
23864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023865 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023866 D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023867 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023869 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023870 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023871 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023872 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023873}
23874
Pablo Galindoc6483c92020-06-10 14:07:06 +010023875// _tmp_144: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023876static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023877_tmp_144_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023878{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023879 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023880 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023881 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023882 return NULL;
23883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023884 void * _res = NULL;
23885 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023886 { // 'or' conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023887 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023888 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023889 return NULL;
23890 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023891 D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023892 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023893 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023894 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023895 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023896 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023897 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023898 )
23899 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023900 D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023901 _res = c;
23902 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023903 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023904 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023905 return NULL;
23906 }
23907 goto done;
23908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023909 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023910 D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023911 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023913 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023914 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023915 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023916 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023917}
23918
Pablo Galindoc6483c92020-06-10 14:07:06 +010023919// _tmp_145: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023920static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023921_tmp_145_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023922{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023923 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023924 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023925 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023926 return NULL;
23927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023928 void * _res = NULL;
23929 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023930 { // 'and' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023931 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023932 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023933 return NULL;
23934 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023935 D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023936 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023937 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023938 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023939 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023941 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023942 )
23943 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023944 D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023945 _res = c;
23946 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023947 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023948 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023949 return NULL;
23950 }
23951 goto done;
23952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023953 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023954 D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +010023955 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023957 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023958 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023959 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023960 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023961}
23962
Pablo Galindoc6483c92020-06-10 14:07:06 +010023963// _tmp_146: 'if' disjunction
Pablo Galindo9f495902020-06-08 02:57:00 +010023964static void *
23965_tmp_146_rule(Parser *p)
23966{
23967 D(p->level++);
23968 if (p->error_indicator) {
23969 D(p->level--);
23970 return NULL;
23971 }
23972 void * _res = NULL;
23973 int _mark = p->mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023974 { // 'if' disjunction
23975 if (p->error_indicator) {
23976 D(p->level--);
23977 return NULL;
23978 }
23979 D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
23980 Token * _keyword;
23981 expr_ty z;
23982 if (
23983 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
23984 &&
23985 (z = disjunction_rule(p)) // disjunction
23986 )
23987 {
23988 D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
23989 _res = z;
23990 if (_res == NULL && PyErr_Occurred()) {
23991 p->error_indicator = 1;
23992 D(p->level--);
23993 return NULL;
23994 }
23995 goto done;
23996 }
23997 p->mark = _mark;
23998 D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
23999 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
24000 }
24001 _res = NULL;
24002 done:
24003 D(p->level--);
24004 return _res;
24005}
24006
24007// _tmp_147: 'if' disjunction
24008static void *
24009_tmp_147_rule(Parser *p)
24010{
24011 D(p->level++);
24012 if (p->error_indicator) {
24013 D(p->level--);
24014 return NULL;
24015 }
24016 void * _res = NULL;
24017 int _mark = p->mark;
24018 { // 'if' disjunction
24019 if (p->error_indicator) {
24020 D(p->level--);
24021 return NULL;
24022 }
24023 D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
24024 Token * _keyword;
24025 expr_ty z;
24026 if (
24027 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
24028 &&
24029 (z = disjunction_rule(p)) // disjunction
24030 )
24031 {
24032 D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
24033 _res = z;
24034 if (_res == NULL && PyErr_Occurred()) {
24035 p->error_indicator = 1;
24036 D(p->level--);
24037 return NULL;
24038 }
24039 goto done;
24040 }
24041 p->mark = _mark;
24042 D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
24043 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
24044 }
24045 _res = NULL;
24046 done:
24047 D(p->level--);
24048 return _res;
24049}
24050
24051// _tmp_148: ',' star_target
24052static void *
24053_tmp_148_rule(Parser *p)
24054{
24055 D(p->level++);
24056 if (p->error_indicator) {
24057 D(p->level--);
24058 return NULL;
24059 }
24060 void * _res = NULL;
24061 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024062 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024063 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024064 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024065 return NULL;
24066 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024067 D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024068 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024069 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024070 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024071 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024072 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010024073 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024074 )
24075 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024076 D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024077 _res = c;
24078 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024079 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010024080 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024081 return NULL;
24082 }
24083 goto done;
24084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024085 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024086 D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024087 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024089 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024090 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010024091 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024092 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024093}
24094
Pablo Galindoc6483c92020-06-10 14:07:06 +010024095// _tmp_149: star_targets '='
Pablo Galindo9f495902020-06-08 02:57:00 +010024096static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024097_tmp_149_rule(Parser *p)
Pablo Galindo9f495902020-06-08 02:57:00 +010024098{
24099 D(p->level++);
24100 if (p->error_indicator) {
24101 D(p->level--);
24102 return NULL;
24103 }
24104 void * _res = NULL;
24105 int _mark = p->mark;
24106 { // star_targets '='
24107 if (p->error_indicator) {
24108 D(p->level--);
24109 return NULL;
24110 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024111 D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindo9f495902020-06-08 02:57:00 +010024112 Token * _literal;
24113 expr_ty star_targets_var;
24114 if (
24115 (star_targets_var = star_targets_rule(p)) // star_targets
24116 &&
24117 (_literal = _PyPegen_expect_token(p, 22)) // token='='
24118 )
24119 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024120 D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindo9f495902020-06-08 02:57:00 +010024121 _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
24122 goto done;
24123 }
24124 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024125 D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +010024126 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
24127 }
24128 _res = NULL;
24129 done:
24130 D(p->level--);
24131 return _res;
24132}
24133
Pablo Galindoc6483c92020-06-10 14:07:06 +010024134// _tmp_150: star_targets '='
Pablo Galindo9f495902020-06-08 02:57:00 +010024135static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024136_tmp_150_rule(Parser *p)
Pablo Galindo9f495902020-06-08 02:57:00 +010024137{
24138 D(p->level++);
24139 if (p->error_indicator) {
24140 D(p->level--);
24141 return NULL;
24142 }
24143 void * _res = NULL;
24144 int _mark = p->mark;
24145 { // star_targets '='
24146 if (p->error_indicator) {
24147 D(p->level--);
24148 return NULL;
24149 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024150 D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindo9f495902020-06-08 02:57:00 +010024151 Token * _literal;
24152 expr_ty star_targets_var;
24153 if (
24154 (star_targets_var = star_targets_rule(p)) // star_targets
24155 &&
24156 (_literal = _PyPegen_expect_token(p, 22)) // token='='
24157 )
24158 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024159 D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindo9f495902020-06-08 02:57:00 +010024160 _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
24161 goto done;
24162 }
24163 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024164 D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +010024165 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
24166 }
24167 _res = NULL;
24168 done:
24169 D(p->level--);
24170 return _res;
24171}
24172
Pablo Galindoc6483c92020-06-10 14:07:06 +010024173// _loop1_151: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024174static asdl_seq *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024175_loop1_151_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070024176{
Pablo Galindo800a35c62020-05-25 18:38:45 +010024177 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070024178 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024179 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024180 return NULL;
24181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024182 void *_res = NULL;
24183 int _mark = p->mark;
24184 int _start_mark = p->mark;
24185 void **_children = PyMem_Malloc(sizeof(void *));
24186 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030024187 p->error_indicator = 1;
24188 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010024189 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024190 return NULL;
24191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024192 ssize_t _children_capacity = 1;
24193 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070024194 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024195 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024196 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024197 return NULL;
24198 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024199 D(fprintf(stderr, "%*c> _loop1_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070024200 NameDefaultPair* param_with_default_var;
24201 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010024202 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070024203 )
24204 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024205 _res = param_with_default_var;
24206 if (_n == _children_capacity) {
24207 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030024208 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24209 if (!_new_children) {
24210 p->error_indicator = 1;
24211 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010024212 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024213 return NULL;
24214 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030024215 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070024216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024217 _children[_n++] = _res;
24218 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070024219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024220 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024221 D(fprintf(stderr, "%*c%s _loop1_151[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024222 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070024223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024224 if (_n == 0 || p->error_indicator) {
24225 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010024226 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024227 return NULL;
24228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024229 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
24230 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024231 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030024232 p->error_indicator = 1;
24233 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010024234 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024235 return NULL;
24236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024237 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
24238 PyMem_Free(_children);
Pablo Galindoc6483c92020-06-10 14:07:06 +010024239 _PyPegen_insert_memo(p, _start_mark, _loop1_151_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010024240 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024241 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070024242}
24243
Pablo Galindoc6483c92020-06-10 14:07:06 +010024244// _loop1_152: lambda_param_with_default
24245static asdl_seq *
24246_loop1_152_rule(Parser *p)
24247{
24248 D(p->level++);
24249 if (p->error_indicator) {
24250 D(p->level--);
24251 return NULL;
24252 }
24253 void *_res = NULL;
24254 int _mark = p->mark;
24255 int _start_mark = p->mark;
24256 void **_children = PyMem_Malloc(sizeof(void *));
24257 if (!_children) {
24258 p->error_indicator = 1;
24259 PyErr_NoMemory();
24260 D(p->level--);
24261 return NULL;
24262 }
24263 ssize_t _children_capacity = 1;
24264 ssize_t _n = 0;
24265 { // lambda_param_with_default
24266 if (p->error_indicator) {
24267 D(p->level--);
24268 return NULL;
24269 }
24270 D(fprintf(stderr, "%*c> _loop1_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
24271 NameDefaultPair* lambda_param_with_default_var;
24272 while (
24273 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
24274 )
24275 {
24276 _res = lambda_param_with_default_var;
24277 if (_n == _children_capacity) {
24278 _children_capacity *= 2;
24279 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24280 if (!_new_children) {
24281 p->error_indicator = 1;
24282 PyErr_NoMemory();
24283 D(p->level--);
24284 return NULL;
24285 }
24286 _children = _new_children;
24287 }
24288 _children[_n++] = _res;
24289 _mark = p->mark;
24290 }
24291 p->mark = _mark;
24292 D(fprintf(stderr, "%*c%s _loop1_152[%d-%d]: %s failed!\n", p->level, ' ',
24293 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
24294 }
24295 if (_n == 0 || p->error_indicator) {
24296 PyMem_Free(_children);
24297 D(p->level--);
24298 return NULL;
24299 }
24300 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
24301 if (!_seq) {
24302 PyMem_Free(_children);
24303 p->error_indicator = 1;
24304 PyErr_NoMemory();
24305 D(p->level--);
24306 return NULL;
24307 }
24308 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
24309 PyMem_Free(_children);
24310 _PyPegen_insert_memo(p, _start_mark, _loop1_152_type, _seq);
24311 D(p->level--);
24312 return _seq;
24313}
24314
24315// _tmp_153: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024316static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024317_tmp_153_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024318{
Pablo Galindo800a35c62020-05-25 18:38:45 +010024319 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024320 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024321 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024322 return NULL;
24323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024324 void * _res = NULL;
24325 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024326 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024327 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024328 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024329 return NULL;
24330 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024331 D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024332 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024333 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024334 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024335 )
24336 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024337 D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024338 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024339 goto done;
24340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024341 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024342 D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024343 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024344 }
24345 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024346 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024347 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024348 return NULL;
24349 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024350 D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024351 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024352 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024353 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024354 )
24355 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024356 D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024357 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024358 goto done;
24359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024360 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024361 D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024362 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024364 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024365 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010024366 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024367 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024368}
24369
Pablo Galindoc6483c92020-06-10 14:07:06 +010024370// _tmp_154: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024371static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024372_tmp_154_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024373{
Pablo Galindo800a35c62020-05-25 18:38:45 +010024374 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024375 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024376 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024377 return NULL;
24378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024379 void * _res = NULL;
24380 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024381 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024382 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024383 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024384 return NULL;
24385 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024386 D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024387 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024388 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024389 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024390 )
24391 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024392 D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024393 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024394 goto done;
24395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024396 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024397 D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024398 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024399 }
24400 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024401 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024402 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024403 return NULL;
24404 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024405 D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024406 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024407 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024408 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024409 )
24410 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024411 D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024412 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024413 goto done;
24414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024415 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024416 D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024417 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024419 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024420 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010024421 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024422 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024423}
24424
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024425void *
24426_PyPegen_parse(Parser *p)
24427{
24428 // Initialize keywords
24429 p->keywords = reserved_keywords;
24430 p->n_keyword_lists = n_keyword_lists;
24431
24432 // Run parser
24433 void *result = NULL;
24434 if (p->start_rule == Py_file_input) {
24435 result = file_rule(p);
24436 } else if (p->start_rule == Py_single_input) {
24437 result = interactive_rule(p);
24438 } else if (p->start_rule == Py_eval_input) {
24439 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070024440 } else if (p->start_rule == Py_func_type_input) {
24441 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024442 } else if (p->start_rule == Py_fstring_input) {
24443 result = fstring_rule(p);
24444 }
24445
24446 return result;
24447}
24448
24449// The end