blob: d28e6c83aadb08c22ed58127ba212a94cfc1cad3 [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
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030010static const int n_keyword_lists = 9;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011static KeywordToken *reserved_keywords[] = {
12 NULL,
13 NULL,
14 (KeywordToken[]) {
15 {"if", 510},
16 {"in", 518},
17 {"is", 526},
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030018 {"as", 530},
19 {"or", 531},
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020 {NULL, -1},
21 },
22 (KeywordToken[]) {
23 {"del", 503},
24 {"try", 511},
25 {"for", 517},
26 {"def", 522},
27 {"not", 525},
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030028 {"and", 532},
Pablo Galindoc5fc1562020-04-22 23:29:27 +010029 {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 },
Pablo Galindoc5fc1562020-04-22 23:29:27 +010068};
69#define file_type 1000
70#define interactive_type 1001
71#define eval_type 1002
Guido van Rossumc001c092020-04-30 12:12:19 -070072#define func_type_type 1003
73#define fstring_type 1004
74#define type_expressions_type 1005
75#define statements_type 1006
76#define statement_type 1007
77#define statement_newline_type 1008
78#define simple_stmt_type 1009
79#define small_stmt_type 1010
80#define compound_stmt_type 1011
81#define assignment_type 1012
82#define augassign_type 1013
83#define global_stmt_type 1014
84#define nonlocal_stmt_type 1015
85#define yield_stmt_type 1016
86#define assert_stmt_type 1017
87#define del_stmt_type 1018
88#define import_stmt_type 1019
89#define import_name_type 1020
90#define import_from_type 1021
91#define import_from_targets_type 1022
92#define import_from_as_names_type 1023
93#define import_from_as_name_type 1024
94#define dotted_as_names_type 1025
95#define dotted_as_name_type 1026
96#define dotted_name_type 1027 // Left-recursive
97#define if_stmt_type 1028
98#define elif_stmt_type 1029
99#define else_block_type 1030
100#define while_stmt_type 1031
101#define for_stmt_type 1032
102#define with_stmt_type 1033
103#define with_item_type 1034
104#define try_stmt_type 1035
105#define except_block_type 1036
106#define finally_block_type 1037
107#define return_stmt_type 1038
108#define raise_stmt_type 1039
109#define function_def_type 1040
110#define function_def_raw_type 1041
111#define func_type_comment_type 1042
112#define params_type 1043
113#define parameters_type 1044
114#define slash_no_default_type 1045
115#define slash_with_default_type 1046
116#define star_etc_type 1047
117#define kwds_type 1048
118#define param_no_default_type 1049
119#define param_with_default_type 1050
120#define param_maybe_default_type 1051
121#define param_type 1052
122#define annotation_type 1053
123#define default_type 1054
124#define decorators_type 1055
125#define class_def_type 1056
126#define class_def_raw_type 1057
127#define block_type 1058
128#define expressions_list_type 1059
129#define star_expressions_type 1060
130#define star_expression_type 1061
131#define star_named_expressions_type 1062
132#define star_named_expression_type 1063
133#define named_expression_type 1064
134#define annotated_rhs_type 1065
135#define expressions_type 1066
136#define expression_type 1067
137#define lambdef_type 1068
Pablo Galindoc6483c92020-06-10 14:07:06 +0100138#define lambda_params_type 1069
139#define lambda_parameters_type 1070
140#define lambda_slash_no_default_type 1071
141#define lambda_slash_with_default_type 1072
142#define lambda_star_etc_type 1073
143#define lambda_kwds_type 1074
144#define lambda_param_no_default_type 1075
145#define lambda_param_with_default_type 1076
146#define lambda_param_maybe_default_type 1077
147#define lambda_param_type 1078
148#define disjunction_type 1079
149#define conjunction_type 1080
150#define inversion_type 1081
151#define comparison_type 1082
152#define compare_op_bitwise_or_pair_type 1083
153#define eq_bitwise_or_type 1084
154#define noteq_bitwise_or_type 1085
155#define lte_bitwise_or_type 1086
156#define lt_bitwise_or_type 1087
157#define gte_bitwise_or_type 1088
158#define gt_bitwise_or_type 1089
159#define notin_bitwise_or_type 1090
160#define in_bitwise_or_type 1091
161#define isnot_bitwise_or_type 1092
162#define is_bitwise_or_type 1093
163#define bitwise_or_type 1094 // Left-recursive
164#define bitwise_xor_type 1095 // Left-recursive
165#define bitwise_and_type 1096 // Left-recursive
166#define shift_expr_type 1097 // Left-recursive
167#define sum_type 1098 // Left-recursive
168#define term_type 1099 // Left-recursive
169#define factor_type 1100
170#define power_type 1101
171#define await_primary_type 1102
172#define primary_type 1103 // Left-recursive
173#define slices_type 1104
174#define slice_type 1105
175#define atom_type 1106
176#define strings_type 1107
177#define list_type 1108
178#define listcomp_type 1109
179#define tuple_type 1110
180#define group_type 1111
181#define genexp_type 1112
182#define set_type 1113
183#define setcomp_type 1114
184#define dict_type 1115
185#define dictcomp_type 1116
186#define double_starred_kvpairs_type 1117
187#define double_starred_kvpair_type 1118
188#define kvpair_type 1119
189#define for_if_clauses_type 1120
190#define for_if_clause_type 1121
191#define yield_expr_type 1122
192#define arguments_type 1123
193#define args_type 1124
194#define kwargs_type 1125
195#define starred_expression_type 1126
196#define kwarg_or_starred_type 1127
197#define kwarg_or_double_starred_type 1128
198#define star_targets_type 1129
199#define star_targets_seq_type 1130
200#define star_target_type 1131
201#define star_atom_type 1132
202#define single_target_type 1133
203#define single_subscript_attribute_target_type 1134
204#define del_targets_type 1135
205#define del_target_type 1136
206#define del_t_atom_type 1137
207#define del_target_end_type 1138
208#define targets_type 1139
209#define target_type 1140
210#define t_primary_type 1141 // Left-recursive
211#define t_lookahead_type 1142
212#define t_atom_type 1143
213#define incorrect_arguments_type 1144
214#define invalid_kwarg_type 1145
215#define invalid_named_expression_type 1146
216#define invalid_assignment_type 1147
217#define invalid_block_type 1148
218#define invalid_comprehension_type 1149
219#define invalid_dict_comprehension_type 1150
220#define invalid_parameters_type 1151
221#define invalid_lambda_parameters_type 1152
222#define invalid_star_etc_type 1153
223#define invalid_lambda_star_etc_type 1154
224#define invalid_double_type_comments_type 1155
225#define invalid_del_target_type 1156
226#define invalid_import_from_targets_type 1157
227#define _loop0_1_type 1158
228#define _loop0_2_type 1159
229#define _loop0_4_type 1160
230#define _gather_3_type 1161
231#define _loop0_6_type 1162
232#define _gather_5_type 1163
233#define _loop0_8_type 1164
234#define _gather_7_type 1165
235#define _loop0_10_type 1166
236#define _gather_9_type 1167
237#define _loop1_11_type 1168
238#define _loop0_13_type 1169
239#define _gather_12_type 1170
240#define _tmp_14_type 1171
241#define _tmp_15_type 1172
242#define _tmp_16_type 1173
243#define _tmp_17_type 1174
244#define _tmp_18_type 1175
245#define _tmp_19_type 1176
246#define _tmp_20_type 1177
247#define _tmp_21_type 1178
248#define _loop1_22_type 1179
249#define _tmp_23_type 1180
250#define _tmp_24_type 1181
251#define _loop0_26_type 1182
252#define _gather_25_type 1183
253#define _loop0_28_type 1184
254#define _gather_27_type 1185
255#define _tmp_29_type 1186
256#define _loop0_30_type 1187
257#define _loop1_31_type 1188
258#define _loop0_33_type 1189
259#define _gather_32_type 1190
260#define _tmp_34_type 1191
261#define _loop0_36_type 1192
262#define _gather_35_type 1193
263#define _tmp_37_type 1194
264#define _loop0_39_type 1195
265#define _gather_38_type 1196
266#define _loop0_41_type 1197
267#define _gather_40_type 1198
268#define _loop0_43_type 1199
269#define _gather_42_type 1200
270#define _loop0_45_type 1201
271#define _gather_44_type 1202
272#define _tmp_46_type 1203
273#define _loop1_47_type 1204
274#define _tmp_48_type 1205
275#define _tmp_49_type 1206
276#define _tmp_50_type 1207
277#define _tmp_51_type 1208
278#define _tmp_52_type 1209
279#define _loop0_53_type 1210
280#define _loop0_54_type 1211
281#define _loop0_55_type 1212
282#define _loop1_56_type 1213
283#define _loop0_57_type 1214
284#define _loop1_58_type 1215
285#define _loop1_59_type 1216
286#define _loop1_60_type 1217
287#define _loop0_61_type 1218
288#define _loop1_62_type 1219
289#define _loop0_63_type 1220
290#define _loop1_64_type 1221
291#define _loop0_65_type 1222
292#define _loop1_66_type 1223
293#define _loop1_67_type 1224
294#define _tmp_68_type 1225
295#define _loop0_70_type 1226
296#define _gather_69_type 1227
297#define _loop1_71_type 1228
298#define _loop0_73_type 1229
299#define _gather_72_type 1230
300#define _loop1_74_type 1231
301#define _loop0_75_type 1232
302#define _loop0_76_type 1233
303#define _loop0_77_type 1234
304#define _loop1_78_type 1235
305#define _loop0_79_type 1236
306#define _loop1_80_type 1237
307#define _loop1_81_type 1238
308#define _loop1_82_type 1239
309#define _loop0_83_type 1240
310#define _loop1_84_type 1241
311#define _loop0_85_type 1242
312#define _loop1_86_type 1243
313#define _loop0_87_type 1244
314#define _loop1_88_type 1245
315#define _loop1_89_type 1246
316#define _loop1_90_type 1247
317#define _loop1_91_type 1248
318#define _tmp_92_type 1249
319#define _loop0_94_type 1250
320#define _gather_93_type 1251
321#define _tmp_95_type 1252
322#define _tmp_96_type 1253
323#define _tmp_97_type 1254
324#define _tmp_98_type 1255
325#define _loop1_99_type 1256
326#define _tmp_100_type 1257
327#define _tmp_101_type 1258
328#define _loop0_103_type 1259
329#define _gather_102_type 1260
330#define _loop1_104_type 1261
331#define _loop0_105_type 1262
332#define _loop0_106_type 1263
333#define _tmp_107_type 1264
334#define _tmp_108_type 1265
335#define _loop0_110_type 1266
336#define _gather_109_type 1267
337#define _loop0_112_type 1268
338#define _gather_111_type 1269
339#define _loop0_114_type 1270
340#define _gather_113_type 1271
341#define _loop0_116_type 1272
342#define _gather_115_type 1273
343#define _loop0_117_type 1274
344#define _loop0_119_type 1275
345#define _gather_118_type 1276
346#define _tmp_120_type 1277
347#define _loop0_122_type 1278
348#define _gather_121_type 1279
349#define _loop0_124_type 1280
350#define _gather_123_type 1281
351#define _tmp_125_type 1282
352#define _loop0_126_type 1283
353#define _tmp_127_type 1284
354#define _loop0_128_type 1285
355#define _loop0_129_type 1286
356#define _tmp_130_type 1287
357#define _tmp_131_type 1288
358#define _loop0_132_type 1289
359#define _tmp_133_type 1290
360#define _loop0_134_type 1291
361#define _tmp_135_type 1292
362#define _tmp_136_type 1293
363#define _tmp_137_type 1294
364#define _tmp_138_type 1295
365#define _tmp_139_type 1296
366#define _tmp_140_type 1297
367#define _tmp_141_type 1298
368#define _tmp_142_type 1299
369#define _tmp_143_type 1300
370#define _tmp_144_type 1301
371#define _tmp_145_type 1302
372#define _tmp_146_type 1303
373#define _tmp_147_type 1304
374#define _tmp_148_type 1305
375#define _tmp_149_type 1306
376#define _tmp_150_type 1307
377#define _loop1_151_type 1308
378#define _loop1_152_type 1309
379#define _tmp_153_type 1310
380#define _tmp_154_type 1311
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100381
382static mod_ty file_rule(Parser *p);
383static mod_ty interactive_rule(Parser *p);
384static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700385static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100386static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700387static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100388static asdl_seq* statements_rule(Parser *p);
389static asdl_seq* statement_rule(Parser *p);
390static asdl_seq* statement_newline_rule(Parser *p);
391static asdl_seq* simple_stmt_rule(Parser *p);
392static stmt_ty small_stmt_rule(Parser *p);
393static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300394static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100395static AugOperator* augassign_rule(Parser *p);
396static stmt_ty global_stmt_rule(Parser *p);
397static stmt_ty nonlocal_stmt_rule(Parser *p);
398static stmt_ty yield_stmt_rule(Parser *p);
399static stmt_ty assert_stmt_rule(Parser *p);
400static stmt_ty del_stmt_rule(Parser *p);
401static stmt_ty import_stmt_rule(Parser *p);
402static stmt_ty import_name_rule(Parser *p);
403static stmt_ty import_from_rule(Parser *p);
404static asdl_seq* import_from_targets_rule(Parser *p);
405static asdl_seq* import_from_as_names_rule(Parser *p);
406static alias_ty import_from_as_name_rule(Parser *p);
407static asdl_seq* dotted_as_names_rule(Parser *p);
408static alias_ty dotted_as_name_rule(Parser *p);
409static expr_ty dotted_name_rule(Parser *p);
410static stmt_ty if_stmt_rule(Parser *p);
411static stmt_ty elif_stmt_rule(Parser *p);
412static asdl_seq* else_block_rule(Parser *p);
413static stmt_ty while_stmt_rule(Parser *p);
414static stmt_ty for_stmt_rule(Parser *p);
415static stmt_ty with_stmt_rule(Parser *p);
416static withitem_ty with_item_rule(Parser *p);
417static stmt_ty try_stmt_rule(Parser *p);
418static excepthandler_ty except_block_rule(Parser *p);
419static asdl_seq* finally_block_rule(Parser *p);
420static stmt_ty return_stmt_rule(Parser *p);
421static stmt_ty raise_stmt_rule(Parser *p);
422static stmt_ty function_def_rule(Parser *p);
423static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100424static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100425static arguments_ty params_rule(Parser *p);
426static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700427static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100428static SlashWithDefault* slash_with_default_rule(Parser *p);
429static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100430static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700431static arg_ty param_no_default_rule(Parser *p);
432static NameDefaultPair* param_with_default_rule(Parser *p);
433static NameDefaultPair* param_maybe_default_rule(Parser *p);
434static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100435static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700436static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100437static asdl_seq* decorators_rule(Parser *p);
438static stmt_ty class_def_rule(Parser *p);
439static stmt_ty class_def_raw_rule(Parser *p);
440static asdl_seq* block_rule(Parser *p);
441static asdl_seq* expressions_list_rule(Parser *p);
442static expr_ty star_expressions_rule(Parser *p);
443static expr_ty star_expression_rule(Parser *p);
444static asdl_seq* star_named_expressions_rule(Parser *p);
445static expr_ty star_named_expression_rule(Parser *p);
446static expr_ty named_expression_rule(Parser *p);
447static expr_ty annotated_rhs_rule(Parser *p);
448static expr_ty expressions_rule(Parser *p);
449static expr_ty expression_rule(Parser *p);
450static expr_ty lambdef_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100451static arguments_ty lambda_params_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100452static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700453static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100454static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
455static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100456static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700457static arg_ty lambda_param_no_default_rule(Parser *p);
458static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
459static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
460static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100461static expr_ty disjunction_rule(Parser *p);
462static expr_ty conjunction_rule(Parser *p);
463static expr_ty inversion_rule(Parser *p);
464static expr_ty comparison_rule(Parser *p);
465static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
466static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
467static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
468static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
469static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
470static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
471static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
472static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
473static CmpopExprPair* in_bitwise_or_rule(Parser *p);
474static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
475static CmpopExprPair* is_bitwise_or_rule(Parser *p);
476static expr_ty bitwise_or_rule(Parser *p);
477static expr_ty bitwise_xor_rule(Parser *p);
478static expr_ty bitwise_and_rule(Parser *p);
479static expr_ty shift_expr_rule(Parser *p);
480static expr_ty sum_rule(Parser *p);
481static expr_ty term_rule(Parser *p);
482static expr_ty factor_rule(Parser *p);
483static expr_ty power_rule(Parser *p);
484static expr_ty await_primary_rule(Parser *p);
485static expr_ty primary_rule(Parser *p);
486static expr_ty slices_rule(Parser *p);
487static expr_ty slice_rule(Parser *p);
488static expr_ty atom_rule(Parser *p);
489static expr_ty strings_rule(Parser *p);
490static expr_ty list_rule(Parser *p);
491static expr_ty listcomp_rule(Parser *p);
492static expr_ty tuple_rule(Parser *p);
493static expr_ty group_rule(Parser *p);
494static expr_ty genexp_rule(Parser *p);
495static expr_ty set_rule(Parser *p);
496static expr_ty setcomp_rule(Parser *p);
497static expr_ty dict_rule(Parser *p);
498static expr_ty dictcomp_rule(Parser *p);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +0300499static asdl_seq* double_starred_kvpairs_rule(Parser *p);
500static KeyValuePair* double_starred_kvpair_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100501static KeyValuePair* kvpair_rule(Parser *p);
502static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300503static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100504static expr_ty yield_expr_rule(Parser *p);
505static expr_ty arguments_rule(Parser *p);
506static expr_ty args_rule(Parser *p);
507static asdl_seq* kwargs_rule(Parser *p);
508static expr_ty starred_expression_rule(Parser *p);
509static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
510static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
511static expr_ty star_targets_rule(Parser *p);
512static asdl_seq* star_targets_seq_rule(Parser *p);
513static expr_ty star_target_rule(Parser *p);
514static expr_ty star_atom_rule(Parser *p);
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300515static expr_ty single_target_rule(Parser *p);
516static expr_ty single_subscript_attribute_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100517static asdl_seq* del_targets_rule(Parser *p);
518static expr_ty del_target_rule(Parser *p);
519static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700520static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100521static asdl_seq* targets_rule(Parser *p);
522static expr_ty target_rule(Parser *p);
523static expr_ty t_primary_rule(Parser *p);
524static void *t_lookahead_rule(Parser *p);
525static expr_ty t_atom_rule(Parser *p);
526static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300527static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100528static void *invalid_named_expression_rule(Parser *p);
529static void *invalid_assignment_rule(Parser *p);
530static void *invalid_block_rule(Parser *p);
531static void *invalid_comprehension_rule(Parser *p);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +0300532static void *invalid_dict_comprehension_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100533static void *invalid_parameters_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100534static void *invalid_lambda_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300535static void *invalid_star_etc_rule(Parser *p);
536static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700537static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700538static void *invalid_del_target_rule(Parser *p);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +0300539static void *invalid_import_from_targets_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100540static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700541static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100542static asdl_seq *_loop0_4_rule(Parser *p);
543static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700544static asdl_seq *_loop0_6_rule(Parser *p);
545static asdl_seq *_gather_5_rule(Parser *p);
546static asdl_seq *_loop0_8_rule(Parser *p);
547static asdl_seq *_gather_7_rule(Parser *p);
548static asdl_seq *_loop0_10_rule(Parser *p);
549static asdl_seq *_gather_9_rule(Parser *p);
550static asdl_seq *_loop1_11_rule(Parser *p);
551static asdl_seq *_loop0_13_rule(Parser *p);
552static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100553static void *_tmp_14_rule(Parser *p);
554static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700555static void *_tmp_16_rule(Parser *p);
556static void *_tmp_17_rule(Parser *p);
557static void *_tmp_18_rule(Parser *p);
558static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100559static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700560static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100561static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700562static void *_tmp_23_rule(Parser *p);
563static void *_tmp_24_rule(Parser *p);
564static asdl_seq *_loop0_26_rule(Parser *p);
565static asdl_seq *_gather_25_rule(Parser *p);
566static asdl_seq *_loop0_28_rule(Parser *p);
567static asdl_seq *_gather_27_rule(Parser *p);
568static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100569static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700570static asdl_seq *_loop1_31_rule(Parser *p);
571static asdl_seq *_loop0_33_rule(Parser *p);
572static asdl_seq *_gather_32_rule(Parser *p);
573static void *_tmp_34_rule(Parser *p);
574static asdl_seq *_loop0_36_rule(Parser *p);
575static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100576static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700577static asdl_seq *_loop0_39_rule(Parser *p);
578static asdl_seq *_gather_38_rule(Parser *p);
579static asdl_seq *_loop0_41_rule(Parser *p);
580static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300581static asdl_seq *_loop0_43_rule(Parser *p);
582static asdl_seq *_gather_42_rule(Parser *p);
583static asdl_seq *_loop0_45_rule(Parser *p);
584static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100585static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300586static asdl_seq *_loop1_47_rule(Parser *p);
587static void *_tmp_48_rule(Parser *p);
588static void *_tmp_49_rule(Parser *p);
589static void *_tmp_50_rule(Parser *p);
590static void *_tmp_51_rule(Parser *p);
591static void *_tmp_52_rule(Parser *p);
592static asdl_seq *_loop0_53_rule(Parser *p);
593static asdl_seq *_loop0_54_rule(Parser *p);
594static asdl_seq *_loop0_55_rule(Parser *p);
595static asdl_seq *_loop1_56_rule(Parser *p);
596static asdl_seq *_loop0_57_rule(Parser *p);
597static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700598static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300599static asdl_seq *_loop1_60_rule(Parser *p);
600static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700601static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300602static asdl_seq *_loop0_63_rule(Parser *p);
603static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700604static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700605static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300606static asdl_seq *_loop1_67_rule(Parser *p);
607static void *_tmp_68_rule(Parser *p);
608static asdl_seq *_loop0_70_rule(Parser *p);
609static asdl_seq *_gather_69_rule(Parser *p);
610static asdl_seq *_loop1_71_rule(Parser *p);
611static asdl_seq *_loop0_73_rule(Parser *p);
612static asdl_seq *_gather_72_rule(Parser *p);
613static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700614static asdl_seq *_loop0_75_rule(Parser *p);
615static asdl_seq *_loop0_76_rule(Parser *p);
616static asdl_seq *_loop0_77_rule(Parser *p);
617static asdl_seq *_loop1_78_rule(Parser *p);
618static asdl_seq *_loop0_79_rule(Parser *p);
619static asdl_seq *_loop1_80_rule(Parser *p);
620static asdl_seq *_loop1_81_rule(Parser *p);
621static asdl_seq *_loop1_82_rule(Parser *p);
622static asdl_seq *_loop0_83_rule(Parser *p);
623static asdl_seq *_loop1_84_rule(Parser *p);
624static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300625static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700626static asdl_seq *_loop0_87_rule(Parser *p);
627static asdl_seq *_loop1_88_rule(Parser *p);
628static asdl_seq *_loop1_89_rule(Parser *p);
629static asdl_seq *_loop1_90_rule(Parser *p);
630static asdl_seq *_loop1_91_rule(Parser *p);
631static void *_tmp_92_rule(Parser *p);
632static asdl_seq *_loop0_94_rule(Parser *p);
633static asdl_seq *_gather_93_rule(Parser *p);
634static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700635static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700636static void *_tmp_97_rule(Parser *p);
637static void *_tmp_98_rule(Parser *p);
638static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100639static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300640static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700641static asdl_seq *_loop0_103_rule(Parser *p);
642static asdl_seq *_gather_102_rule(Parser *p);
643static asdl_seq *_loop1_104_rule(Parser *p);
644static asdl_seq *_loop0_105_rule(Parser *p);
645static asdl_seq *_loop0_106_rule(Parser *p);
646static void *_tmp_107_rule(Parser *p);
647static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300648static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700649static asdl_seq *_gather_109_rule(Parser *p);
650static asdl_seq *_loop0_112_rule(Parser *p);
651static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100652static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300653static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100654static asdl_seq *_loop0_116_rule(Parser *p);
655static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700656static asdl_seq *_loop0_117_rule(Parser *p);
657static asdl_seq *_loop0_119_rule(Parser *p);
658static asdl_seq *_gather_118_rule(Parser *p);
659static void *_tmp_120_rule(Parser *p);
660static asdl_seq *_loop0_122_rule(Parser *p);
661static asdl_seq *_gather_121_rule(Parser *p);
662static asdl_seq *_loop0_124_rule(Parser *p);
663static asdl_seq *_gather_123_rule(Parser *p);
664static void *_tmp_125_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300665static asdl_seq *_loop0_126_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700666static void *_tmp_127_rule(Parser *p);
Pablo Galindo9f495902020-06-08 02:57:00 +0100667static asdl_seq *_loop0_128_rule(Parser *p);
668static asdl_seq *_loop0_129_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300669static void *_tmp_130_rule(Parser *p);
Pablo Galindo9f495902020-06-08 02:57:00 +0100670static void *_tmp_131_rule(Parser *p);
671static asdl_seq *_loop0_132_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100672static void *_tmp_133_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100673static asdl_seq *_loop0_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100674static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700675static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100676static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700677static void *_tmp_138_rule(Parser *p);
678static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300679static void *_tmp_140_rule(Parser *p);
680static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700681static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300682static void *_tmp_143_rule(Parser *p);
683static void *_tmp_144_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300684static void *_tmp_145_rule(Parser *p);
Pablo Galindo9f495902020-06-08 02:57:00 +0100685static void *_tmp_146_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300686static void *_tmp_147_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300687static void *_tmp_148_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100688static void *_tmp_149_rule(Parser *p);
Pablo Galindo9f495902020-06-08 02:57:00 +0100689static void *_tmp_150_rule(Parser *p);
Pablo Galindoc6483c92020-06-10 14:07:06 +0100690static asdl_seq *_loop1_151_rule(Parser *p);
691static asdl_seq *_loop1_152_rule(Parser *p);
692static void *_tmp_153_rule(Parser *p);
693static void *_tmp_154_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100694
695
696// file: statements? $
697static mod_ty
698file_rule(Parser *p)
699{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100700 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100701 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100702 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100703 return NULL;
704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100705 mod_ty _res = NULL;
706 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100707 { // statements? $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300708 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100709 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300710 return NULL;
711 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100712 D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100713 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100714 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100715 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100716 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100717 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100718 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100719 )
720 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100721 D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100722 _res = _PyPegen_make_module ( p , a );
723 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100724 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100725 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100726 return NULL;
727 }
728 goto done;
729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100730 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100731 D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
732 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100734 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100735 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100736 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100737 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100738}
739
740// interactive: statement_newline
741static mod_ty
742interactive_rule(Parser *p)
743{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100744 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100745 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100746 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100747 return NULL;
748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100749 mod_ty _res = NULL;
750 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100751 { // statement_newline
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300752 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100753 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300754 return NULL;
755 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100756 D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100757 asdl_seq* a;
758 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100759 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100760 )
761 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100762 D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100763 _res = Interactive ( a , p -> arena );
764 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100765 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100766 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100767 return NULL;
768 }
769 goto done;
770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100771 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100772 D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
773 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100775 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100776 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100777 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100778 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100779}
780
781// eval: expressions NEWLINE* $
782static mod_ty
783eval_rule(Parser *p)
784{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100785 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100786 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100787 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100788 return NULL;
789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100790 mod_ty _res = NULL;
791 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100792 { // expressions NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300793 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100794 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300795 return NULL;
796 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100797 D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100798 asdl_seq * _loop0_1_var;
799 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100800 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100801 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100802 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100804 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100805 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100806 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100807 )
808 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100809 D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100810 _res = Expression ( a , p -> arena );
811 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100812 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100813 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100814 return NULL;
815 }
816 goto done;
817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100818 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100819 D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
820 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100822 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100823 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100824 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100825 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100826}
827
Guido van Rossumc001c092020-04-30 12:12:19 -0700828// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
829static mod_ty
830func_type_rule(Parser *p)
831{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100832 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -0700833 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100834 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -0700835 return NULL;
836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100837 mod_ty _res = NULL;
838 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700839 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300840 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100841 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300842 return NULL;
843 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100844 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 +0100845 Token * _literal;
846 Token * _literal_1;
847 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700848 asdl_seq * _loop0_2_var;
849 void *a;
850 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100851 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700852 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100853 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700854 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100855 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700856 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100857 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700858 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100859 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700860 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100861 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700862 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100863 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700864 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100865 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700866 )
867 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100868 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 +0100869 _res = FunctionType ( a , b , p -> arena );
870 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700871 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100872 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -0700873 return NULL;
874 }
875 goto done;
876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100877 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100878 D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
879 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
Guido van Rossumc001c092020-04-30 12:12:19 -0700880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100881 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700882 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100883 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100884 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700885}
886
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100887// fstring: star_expressions
888static expr_ty
889fstring_rule(Parser *p)
890{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100891 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100892 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100893 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100894 return NULL;
895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100896 expr_ty _res = NULL;
897 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100898 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300899 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100900 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300901 return NULL;
902 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100903 D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100904 expr_ty star_expressions_var;
905 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100906 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100907 )
908 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100909 D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100910 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100911 goto done;
912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100913 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100914 D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
915 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100917 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100918 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +0100919 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100920 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100921}
922
Guido van Rossumc001c092020-04-30 12:12:19 -0700923// type_expressions:
924// | ','.expression+ ',' '*' expression ',' '**' expression
925// | ','.expression+ ',' '*' expression
926// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700927// | '*' expression ',' '**' expression
928// | '*' expression
929// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700930// | ','.expression+
931static asdl_seq*
932type_expressions_rule(Parser *p)
933{
Pablo Galindo800a35c62020-05-25 18:38:45 +0100934 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -0700935 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100936 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -0700937 return NULL;
938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100939 asdl_seq* _res = NULL;
940 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700941 { // ','.expression+ ',' '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300942 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100943 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300944 return NULL;
945 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100946 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 +0100947 Token * _literal;
948 Token * _literal_1;
949 Token * _literal_2;
950 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700951 asdl_seq * a;
952 expr_ty b;
953 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700954 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100955 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700956 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100957 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700958 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100959 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700960 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100961 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700962 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100963 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700964 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100965 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700966 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100967 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700968 )
969 {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100970 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 +0100971 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
972 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700973 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100974 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -0700975 return NULL;
976 }
977 goto done;
978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100979 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +0100980 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
981 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -0700982 }
983 { // ','.expression+ ',' '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300984 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +0100985 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300986 return NULL;
987 }
Pablo Galindo800a35c62020-05-25 18:38:45 +0100988 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100989 Token * _literal;
990 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700991 asdl_seq * a;
992 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700993 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100994 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700995 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100996 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700997 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100998 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700999 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001000 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -07001001 )
1002 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001003 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 +01001004 _res = _PyPegen_seq_append_to_end ( p , a , b );
1005 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07001006 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001007 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07001008 return NULL;
1009 }
1010 goto done;
1011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001012 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001013 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1014 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -07001015 }
1016 { // ','.expression+ ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001017 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001018 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001019 return NULL;
1020 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001021 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001022 Token * _literal;
1023 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07001024 asdl_seq * a;
1025 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001026 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001027 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001028 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001029 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07001030 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001031 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07001032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001033 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -07001034 )
1035 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001036 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 +01001037 _res = _PyPegen_seq_append_to_end ( p , a , b );
1038 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07001039 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001040 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07001041 return NULL;
1042 }
1043 goto done;
1044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001045 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001046 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1047 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -07001048 }
Shantanu603d3542020-05-03 22:08:14 -07001049 { // '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001050 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001051 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001052 return NULL;
1053 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001054 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001055 Token * _literal;
1056 Token * _literal_1;
1057 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -07001058 expr_ty a;
1059 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -07001060 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001061 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -07001062 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001063 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001064 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001065 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -07001066 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001067 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -07001068 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001069 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001070 )
1071 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001072 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 +01001073 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
1074 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001075 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001076 D(p->level--);
Shantanu603d3542020-05-03 22:08:14 -07001077 return NULL;
1078 }
1079 goto done;
1080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001081 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001082 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1083 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
Shantanu603d3542020-05-03 22:08:14 -07001084 }
1085 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001086 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001087 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001088 return NULL;
1089 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001090 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001091 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001092 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001093 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001094 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -07001095 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001096 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001097 )
1098 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001099 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001100 _res = _PyPegen_singleton_seq ( p , a );
1101 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001102 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001103 D(p->level--);
Shantanu603d3542020-05-03 22:08:14 -07001104 return NULL;
1105 }
1106 goto done;
1107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001108 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001109 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1110 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
Shantanu603d3542020-05-03 22:08:14 -07001111 }
1112 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001113 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001114 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001115 return NULL;
1116 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001117 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001118 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001119 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001120 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001121 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -07001122 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001123 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001124 )
1125 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001126 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001127 _res = _PyPegen_singleton_seq ( p , a );
1128 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001129 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001130 D(p->level--);
Shantanu603d3542020-05-03 22:08:14 -07001131 return NULL;
1132 }
1133 goto done;
1134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001135 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001136 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1137 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
Shantanu603d3542020-05-03 22:08:14 -07001138 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001139 { // ','.expression+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001140 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001141 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001142 return NULL;
1143 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001144 D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
Guido van Rossumc001c092020-04-30 12:12:19 -07001145 asdl_seq * _gather_9_var;
1146 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001147 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001148 )
1149 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001150 D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001151 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001152 goto done;
1153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001154 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001155 D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1156 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
Guido van Rossumc001c092020-04-30 12:12:19 -07001157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001158 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001159 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001160 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001161 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001162}
1163
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001164// statements: statement+
1165static asdl_seq*
1166statements_rule(Parser *p)
1167{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001168 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001169 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001170 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001171 return NULL;
1172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001173 asdl_seq* _res = NULL;
1174 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001175 { // statement+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001176 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001177 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001178 return NULL;
1179 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001180 D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001181 asdl_seq * a;
1182 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001183 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001184 )
1185 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001186 D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001187 _res = _PyPegen_seq_flatten ( p , a );
1188 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001189 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001190 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001191 return NULL;
1192 }
1193 goto done;
1194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001195 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001196 D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1197 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001199 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001200 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001201 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001202 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001203}
1204
1205// statement: compound_stmt | simple_stmt
1206static asdl_seq*
1207statement_rule(Parser *p)
1208{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001209 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001210 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001211 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001212 return NULL;
1213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001214 asdl_seq* _res = NULL;
1215 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001216 { // compound_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001217 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001218 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001219 return NULL;
1220 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001221 D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001222 stmt_ty a;
1223 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001224 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001225 )
1226 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001227 D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001228 _res = _PyPegen_singleton_seq ( p , a );
1229 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001230 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001231 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001232 return NULL;
1233 }
1234 goto done;
1235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001236 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001237 D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1238 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001239 }
1240 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001241 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001242 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001243 return NULL;
1244 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001245 D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001246 asdl_seq* simple_stmt_var;
1247 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001248 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001249 )
1250 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001251 D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001252 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001253 goto done;
1254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001255 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001256 D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1257 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001259 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001260 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001261 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001262 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001263}
1264
1265// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1266static asdl_seq*
1267statement_newline_rule(Parser *p)
1268{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001269 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001270 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001271 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001272 return NULL;
1273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001274 asdl_seq* _res = NULL;
1275 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001276 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1277 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001278 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001279 return NULL;
1280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001281 int _start_lineno = p->tokens[_mark]->lineno;
1282 UNUSED(_start_lineno); // Only used by EXTRA macro
1283 int _start_col_offset = p->tokens[_mark]->col_offset;
1284 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001285 { // compound_stmt NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001286 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001287 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001288 return NULL;
1289 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001290 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 +01001291 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001292 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001293 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001294 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001295 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001296 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001297 )
1298 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001299 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 +01001300 _res = _PyPegen_singleton_seq ( p , a );
1301 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001302 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001303 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001304 return NULL;
1305 }
1306 goto done;
1307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001308 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001309 D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1310 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001311 }
1312 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001313 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001314 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001315 return NULL;
1316 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001317 D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001318 asdl_seq* simple_stmt_var;
1319 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001320 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001321 )
1322 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001323 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 +01001324 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001325 goto done;
1326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001327 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001328 D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1329 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001330 }
1331 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001332 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001333 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001334 return NULL;
1335 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001336 D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Pablo Galindob796b3f2020-05-01 12:32:26 +01001337 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001338 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001339 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001340 )
1341 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001342 D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001343 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1344 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001345 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001346 return NULL;
1347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001348 int _end_lineno = _token->end_lineno;
1349 UNUSED(_end_lineno); // Only used by EXTRA macro
1350 int _end_col_offset = _token->end_col_offset;
1351 UNUSED(_end_col_offset); // Only used by EXTRA macro
1352 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1353 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001354 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001355 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001356 return NULL;
1357 }
1358 goto done;
1359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001360 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001361 D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1362 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001363 }
1364 { // $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001365 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001366 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001367 return NULL;
1368 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001369 D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
Pablo Galindob796b3f2020-05-01 12:32:26 +01001370 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001371 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001372 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001373 )
1374 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001375 D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001376 _res = _PyPegen_interactive_exit ( p );
1377 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001378 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001379 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001380 return NULL;
1381 }
1382 goto done;
1383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001384 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001385 D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1386 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001388 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001389 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001390 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001391 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001392}
1393
1394// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1395static asdl_seq*
1396simple_stmt_rule(Parser *p)
1397{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001398 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001399 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001400 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001401 return NULL;
1402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001403 asdl_seq* _res = NULL;
1404 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001405 { // small_stmt !';' NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001406 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001407 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001408 return NULL;
1409 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001410 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 +01001411 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001412 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001413 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001414 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001415 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001416 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001417 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001418 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001419 )
1420 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001421 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 +01001422 _res = _PyPegen_singleton_seq ( p , a );
1423 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001424 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001425 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001426 return NULL;
1427 }
1428 goto done;
1429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001430 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001431 D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1432 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "small_stmt !';' NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001433 }
1434 { // ';'.small_stmt+ ';'? NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001435 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001436 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001437 return NULL;
1438 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001439 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 +01001440 void *_opt_var;
1441 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001442 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001443 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001444 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001445 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001446 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001447 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001448 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001449 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001450 )
1451 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001452 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 +01001453 _res = a;
1454 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001455 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001456 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001457 return NULL;
1458 }
1459 goto done;
1460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001461 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001462 D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1463 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.small_stmt+ ';'? NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001465 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001466 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01001467 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001468 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001469}
1470
1471// small_stmt:
1472// | assignment
1473// | star_expressions
1474// | &'return' return_stmt
1475// | &('import' | 'from') import_stmt
1476// | &'raise' raise_stmt
1477// | 'pass'
1478// | &'del' del_stmt
1479// | &'yield' yield_stmt
1480// | &'assert' assert_stmt
1481// | 'break'
1482// | 'continue'
1483// | &'global' global_stmt
1484// | &'nonlocal' nonlocal_stmt
1485static stmt_ty
1486small_stmt_rule(Parser *p)
1487{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001488 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001489 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001490 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001491 return NULL;
1492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001493 stmt_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001494 if (_PyPegen_is_memoized(p, small_stmt_type, &_res)) {
1495 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001496 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001498 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001499 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1500 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001501 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001502 return NULL;
1503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001504 int _start_lineno = p->tokens[_mark]->lineno;
1505 UNUSED(_start_lineno); // Only used by EXTRA macro
1506 int _start_col_offset = p->tokens[_mark]->col_offset;
1507 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001508 { // assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001509 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001510 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001511 return NULL;
1512 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001513 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001514 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001515 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001516 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001517 )
1518 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001519 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001520 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001521 goto done;
1522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001523 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001524 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1525 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001526 }
1527 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001528 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001529 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001530 return NULL;
1531 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001532 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001533 expr_ty e;
1534 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001535 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001536 )
1537 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001538 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 +01001539 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1540 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001541 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001542 return NULL;
1543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001544 int _end_lineno = _token->end_lineno;
1545 UNUSED(_end_lineno); // Only used by EXTRA macro
1546 int _end_col_offset = _token->end_col_offset;
1547 UNUSED(_end_col_offset); // Only used by EXTRA macro
1548 _res = _Py_Expr ( e , EXTRA );
1549 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001550 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001551 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001552 return NULL;
1553 }
1554 goto done;
1555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001556 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001557 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1558 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001559 }
1560 { // &'return' return_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001561 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001562 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001563 return NULL;
1564 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001565 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 +01001566 stmt_ty return_stmt_var;
1567 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001568 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001569 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001570 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001571 )
1572 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001573 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 +01001574 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001575 goto done;
1576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001577 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001578 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1579 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001580 }
1581 { // &('import' | 'from') import_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001582 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001583 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001584 return NULL;
1585 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001586 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 +01001587 stmt_ty import_stmt_var;
1588 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001589 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001590 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001591 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001592 )
1593 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001594 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 +01001595 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001596 goto done;
1597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001598 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001599 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1600 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001601 }
1602 { // &'raise' raise_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001603 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001604 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001605 return NULL;
1606 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001607 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 +01001608 stmt_ty raise_stmt_var;
1609 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001610 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001611 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001612 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001613 )
1614 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001615 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 +01001616 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001617 goto done;
1618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001619 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001620 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1621 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 }
1623 { // 'pass'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001624 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001625 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001626 return NULL;
1627 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001628 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001629 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001630 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001631 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001632 )
1633 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001634 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001635 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1636 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001637 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001638 return NULL;
1639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001640 int _end_lineno = _token->end_lineno;
1641 UNUSED(_end_lineno); // Only used by EXTRA macro
1642 int _end_col_offset = _token->end_col_offset;
1643 UNUSED(_end_col_offset); // Only used by EXTRA macro
1644 _res = _Py_Pass ( EXTRA );
1645 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001646 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001647 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001648 return NULL;
1649 }
1650 goto done;
1651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001652 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001653 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1654 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001655 }
1656 { // &'del' del_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001657 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001658 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001659 return NULL;
1660 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001661 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 +01001662 stmt_ty del_stmt_var;
1663 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001664 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001665 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001666 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001667 )
1668 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001669 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 +01001670 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001671 goto done;
1672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001673 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001674 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1675 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 }
1677 { // &'yield' yield_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001678 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001679 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001680 return NULL;
1681 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001682 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 +01001683 stmt_ty yield_stmt_var;
1684 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001685 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001686 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001687 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001688 )
1689 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001690 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 +01001691 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001692 goto done;
1693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001694 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001695 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1696 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001697 }
1698 { // &'assert' assert_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001699 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001700 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001701 return NULL;
1702 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001703 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 +01001704 stmt_ty assert_stmt_var;
1705 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001706 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001707 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001708 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001709 )
1710 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001711 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 +01001712 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001713 goto done;
1714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001715 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001716 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1717 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001718 }
1719 { // 'break'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001720 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001721 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001722 return NULL;
1723 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001724 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001725 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001726 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001727 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001728 )
1729 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001730 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001731 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1732 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001733 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001734 return NULL;
1735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001736 int _end_lineno = _token->end_lineno;
1737 UNUSED(_end_lineno); // Only used by EXTRA macro
1738 int _end_col_offset = _token->end_col_offset;
1739 UNUSED(_end_col_offset); // Only used by EXTRA macro
1740 _res = _Py_Break ( EXTRA );
1741 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001742 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001743 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001744 return NULL;
1745 }
1746 goto done;
1747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001748 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001749 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1750 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001751 }
1752 { // 'continue'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001753 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001754 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001755 return NULL;
1756 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001757 D(fprintf(stderr, "%*c> small_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001758 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001759 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001760 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001761 )
1762 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001763 D(fprintf(stderr, "%*c+ small_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001764 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1765 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001766 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001767 return NULL;
1768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001769 int _end_lineno = _token->end_lineno;
1770 UNUSED(_end_lineno); // Only used by EXTRA macro
1771 int _end_col_offset = _token->end_col_offset;
1772 UNUSED(_end_col_offset); // Only used by EXTRA macro
1773 _res = _Py_Continue ( EXTRA );
1774 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001775 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001776 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001777 return NULL;
1778 }
1779 goto done;
1780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001781 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001782 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1783 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001784 }
1785 { // &'global' global_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001786 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001787 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001788 return NULL;
1789 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001790 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 +01001791 stmt_ty global_stmt_var;
1792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001793 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001794 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001795 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001796 )
1797 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001798 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 +01001799 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001800 goto done;
1801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001802 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001803 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1804 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 }
1806 { // &'nonlocal' nonlocal_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001807 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001808 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001809 return NULL;
1810 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001811 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 +01001812 stmt_ty nonlocal_stmt_var;
1813 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001814 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001815 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001816 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001817 )
1818 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001819 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 +01001820 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001821 goto done;
1822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001823 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001824 D(fprintf(stderr, "%*c%s small_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1825 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001827 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001828 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001829 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01001830 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001831 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001832}
1833
1834// compound_stmt:
1835// | &('def' | '@' | ASYNC) function_def
1836// | &'if' if_stmt
1837// | &('class' | '@') class_def
1838// | &('with' | ASYNC) with_stmt
1839// | &('for' | ASYNC) for_stmt
1840// | &'try' try_stmt
1841// | &'while' while_stmt
1842static stmt_ty
1843compound_stmt_rule(Parser *p)
1844{
Pablo Galindo800a35c62020-05-25 18:38:45 +01001845 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001846 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001847 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001848 return NULL;
1849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001850 stmt_ty _res = NULL;
1851 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001852 { // &('def' | '@' | ASYNC) function_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001853 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001854 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001855 return NULL;
1856 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001857 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 +01001858 stmt_ty function_def_var;
1859 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001860 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001861 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001862 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001863 )
1864 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001865 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 +01001866 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001867 goto done;
1868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001869 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001870 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1871 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001872 }
1873 { // &'if' if_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001874 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001875 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001876 return NULL;
1877 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001878 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 +01001879 stmt_ty if_stmt_var;
1880 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001881 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001882 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001883 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001884 )
1885 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001886 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 +01001887 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001888 goto done;
1889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001890 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001891 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1892 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001893 }
1894 { // &('class' | '@') class_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001895 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001896 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001897 return NULL;
1898 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001899 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 +01001900 stmt_ty class_def_var;
1901 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001902 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001903 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001904 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001905 )
1906 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001907 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 +01001908 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001909 goto done;
1910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001911 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001912 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1913 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001914 }
1915 { // &('with' | ASYNC) with_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001916 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001917 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001918 return NULL;
1919 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001920 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 +01001921 stmt_ty with_stmt_var;
1922 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001923 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001924 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001925 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001926 )
1927 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001928 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 +01001929 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001930 goto done;
1931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001932 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001933 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1934 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | ASYNC) with_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001935 }
1936 { // &('for' | ASYNC) for_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001937 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001938 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001939 return NULL;
1940 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001941 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 +01001942 stmt_ty for_stmt_var;
1943 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001944 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001945 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001946 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001947 )
1948 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001949 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 +01001950 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001951 goto done;
1952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001953 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001954 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1955 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | ASYNC) for_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001956 }
1957 { // &'try' try_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001958 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001959 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001960 return NULL;
1961 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001962 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 +01001963 stmt_ty try_stmt_var;
1964 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001965 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001966 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001967 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001968 )
1969 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001970 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 +01001971 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001972 goto done;
1973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001974 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001975 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1976 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001977 }
1978 { // &'while' while_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001979 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001980 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001981 return NULL;
1982 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01001983 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 +01001984 stmt_ty while_stmt_var;
1985 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001986 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001987 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001988 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001989 )
1990 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01001991 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 +01001992 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001993 goto done;
1994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001995 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01001996 D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1997 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001999 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002000 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002001 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002002 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002003}
2004
2005// assignment:
2006// | NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002007// | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Pablo Galindo9f495902020-06-08 02:57:00 +01002008// | ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002009// | single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002010// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03002011static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002012assignment_rule(Parser *p)
2013{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002014 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002015 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002016 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002017 return NULL;
2018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002019 stmt_ty _res = NULL;
2020 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002021 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2022 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002023 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002024 return NULL;
2025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002026 int _start_lineno = p->tokens[_mark]->lineno;
2027 UNUSED(_start_lineno); // Only used by EXTRA macro
2028 int _start_col_offset = p->tokens[_mark]->col_offset;
2029 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002030 { // NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002031 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002032 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002033 return NULL;
2034 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002035 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 +01002036 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002037 expr_ty a;
2038 expr_ty b;
2039 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002040 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002041 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002042 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002043 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002044 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002045 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002046 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002047 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002048 )
2049 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002050 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 +01002051 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2052 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002053 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002054 return NULL;
2055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002056 int _end_lineno = _token->end_lineno;
2057 UNUSED(_end_lineno); // Only used by EXTRA macro
2058 int _end_col_offset = _token->end_col_offset;
2059 UNUSED(_end_col_offset); // Only used by EXTRA macro
2060 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
2061 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002062 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002063 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002064 return NULL;
2065 }
2066 goto done;
2067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002068 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002069 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2070 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002071 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002072 { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002073 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002074 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002075 return NULL;
2076 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002077 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 +01002078 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002079 void *a;
2080 expr_ty b;
2081 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002082 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002083 (a = _tmp_20_rule(p)) // '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002084 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002085 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002086 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002087 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002088 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002089 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002090 )
2091 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002092 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 +01002093 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2094 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002095 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002096 return NULL;
2097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002098 int _end_lineno = _token->end_lineno;
2099 UNUSED(_end_lineno); // Only used by EXTRA macro
2100 int _end_col_offset = _token->end_col_offset;
2101 UNUSED(_end_col_offset); // Only used by EXTRA macro
2102 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
2103 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002104 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002105 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002106 return NULL;
2107 }
2108 goto done;
2109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002110 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002111 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2112 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002113 }
Pablo Galindo9f495902020-06-08 02:57:00 +01002114 { // ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002115 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002116 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002117 return NULL;
2118 }
Pablo Galindo9f495902020-06-08 02:57:00 +01002119 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 +01002120 asdl_seq * a;
2121 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07002122 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002123 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002124 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002125 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002126 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07002127 &&
Pablo Galindo9f495902020-06-08 02:57:00 +01002128 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='='
2129 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002130 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002131 )
2132 {
Pablo Galindo9f495902020-06-08 02:57:00 +01002133 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 +01002134 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2135 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002136 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002137 return NULL;
2138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002139 int _end_lineno = _token->end_lineno;
2140 UNUSED(_end_lineno); // Only used by EXTRA macro
2141 int _end_col_offset = _token->end_col_offset;
2142 UNUSED(_end_col_offset); // Only used by EXTRA macro
2143 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002145 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002146 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002147 return NULL;
2148 }
2149 goto done;
2150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002151 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002152 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +01002153 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002154 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002155 { // single_target augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002156 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002157 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002158 return NULL;
2159 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002160 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 +01002161 expr_ty a;
2162 AugOperator* b;
2163 void *c;
2164 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03002165 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002166 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002167 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002168 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002169 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002170 )
2171 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002172 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 +01002173 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2174 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002175 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002176 return NULL;
2177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002178 int _end_lineno = _token->end_lineno;
2179 UNUSED(_end_lineno); // Only used by EXTRA macro
2180 int _end_col_offset = _token->end_col_offset;
2181 UNUSED(_end_col_offset); // Only used by EXTRA macro
2182 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
2183 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002184 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002185 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002186 return NULL;
2187 }
2188 goto done;
2189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002190 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002191 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2192 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign (yield_expr | star_expressions)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002193 }
2194 { // invalid_assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002195 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002196 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002197 return NULL;
2198 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002199 D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002200 void *invalid_assignment_var;
2201 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002202 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002203 )
2204 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002205 D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002206 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002207 goto done;
2208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002209 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002210 D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2211 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002213 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002214 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002215 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002216 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002217}
2218
2219// augassign:
2220// | '+='
2221// | '-='
2222// | '*='
2223// | '@='
2224// | '/='
2225// | '%='
2226// | '&='
2227// | '|='
2228// | '^='
2229// | '<<='
2230// | '>>='
2231// | '**='
2232// | '//='
2233static AugOperator*
2234augassign_rule(Parser *p)
2235{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002236 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002237 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002238 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002239 return NULL;
2240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002241 AugOperator* _res = NULL;
2242 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002243 { // '+='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002244 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002245 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002246 return NULL;
2247 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002248 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002249 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002250 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002251 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002252 )
2253 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002254 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002255 _res = _PyPegen_augoperator ( p , Add );
2256 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002257 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002258 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002259 return NULL;
2260 }
2261 goto done;
2262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002263 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002264 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2265 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002266 }
2267 { // '-='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002268 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002269 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002270 return NULL;
2271 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002272 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002273 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002274 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002275 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002276 )
2277 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002278 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002279 _res = _PyPegen_augoperator ( p , Sub );
2280 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002281 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002282 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002283 return NULL;
2284 }
2285 goto done;
2286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002287 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002288 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2289 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002290 }
2291 { // '*='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002292 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002293 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002294 return NULL;
2295 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002296 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002297 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002298 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002299 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002300 )
2301 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002302 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002303 _res = _PyPegen_augoperator ( p , Mult );
2304 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002305 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002306 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002307 return NULL;
2308 }
2309 goto done;
2310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002311 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002312 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2313 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002314 }
2315 { // '@='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002316 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002317 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002318 return NULL;
2319 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002320 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002321 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002322 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002323 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 )
2325 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002326 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002327 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2328 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002329 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002330 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002331 return NULL;
2332 }
2333 goto done;
2334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002335 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002336 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2337 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002338 }
2339 { // '/='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002340 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002341 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002342 return NULL;
2343 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002344 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002345 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002346 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002347 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002348 )
2349 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002350 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002351 _res = _PyPegen_augoperator ( p , Div );
2352 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002353 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002354 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002355 return NULL;
2356 }
2357 goto done;
2358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002359 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002360 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2361 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002362 }
2363 { // '%='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002364 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002365 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002366 return NULL;
2367 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002368 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002369 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002370 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002371 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002372 )
2373 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002374 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002375 _res = _PyPegen_augoperator ( p , Mod );
2376 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002377 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002378 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002379 return NULL;
2380 }
2381 goto done;
2382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002383 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002384 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2385 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002386 }
2387 { // '&='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002388 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002389 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002390 return NULL;
2391 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002392 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002393 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002394 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002395 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002396 )
2397 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002398 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002399 _res = _PyPegen_augoperator ( p , BitAnd );
2400 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002401 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002402 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403 return NULL;
2404 }
2405 goto done;
2406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002407 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002408 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2409 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002410 }
2411 { // '|='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002412 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002413 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002414 return NULL;
2415 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002416 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002417 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002418 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002419 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002420 )
2421 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002422 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002423 _res = _PyPegen_augoperator ( p , BitOr );
2424 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002425 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002426 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002427 return NULL;
2428 }
2429 goto done;
2430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002431 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002432 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2433 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002434 }
2435 { // '^='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002436 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002437 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002438 return NULL;
2439 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002440 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002441 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002442 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002443 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002444 )
2445 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002446 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002447 _res = _PyPegen_augoperator ( p , BitXor );
2448 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002449 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002450 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002451 return NULL;
2452 }
2453 goto done;
2454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002455 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002456 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2457 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002458 }
2459 { // '<<='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002460 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002461 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002462 return NULL;
2463 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002464 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002465 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002466 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002467 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002468 )
2469 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002470 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002471 _res = _PyPegen_augoperator ( p , LShift );
2472 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002473 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002474 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002475 return NULL;
2476 }
2477 goto done;
2478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002479 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002480 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2481 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002482 }
2483 { // '>>='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002484 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002485 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002486 return NULL;
2487 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002488 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002489 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002490 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002491 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002492 )
2493 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002494 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002495 _res = _PyPegen_augoperator ( p , RShift );
2496 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002497 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002498 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002499 return NULL;
2500 }
2501 goto done;
2502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002503 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002504 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2505 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002506 }
2507 { // '**='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002508 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002509 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002510 return NULL;
2511 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002512 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002513 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002514 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002515 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002516 )
2517 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002518 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002519 _res = _PyPegen_augoperator ( p , Pow );
2520 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002521 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002522 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002523 return NULL;
2524 }
2525 goto done;
2526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002527 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002528 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2529 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002530 }
2531 { // '//='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002532 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002533 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002534 return NULL;
2535 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002536 D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002537 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002538 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002539 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002540 )
2541 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002542 D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002543 _res = _PyPegen_augoperator ( p , FloorDiv );
2544 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002545 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002546 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002547 return NULL;
2548 }
2549 goto done;
2550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002551 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002552 D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2553 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002555 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002556 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002557 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002558 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002559}
2560
2561// global_stmt: 'global' ','.NAME+
2562static stmt_ty
2563global_stmt_rule(Parser *p)
2564{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002565 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002566 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002567 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002568 return NULL;
2569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002570 stmt_ty _res = NULL;
2571 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002572 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2573 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002574 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002575 return NULL;
2576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002577 int _start_lineno = p->tokens[_mark]->lineno;
2578 UNUSED(_start_lineno); // Only used by EXTRA macro
2579 int _start_col_offset = p->tokens[_mark]->col_offset;
2580 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002581 { // 'global' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002582 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002583 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002584 return NULL;
2585 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002586 D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002587 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002588 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002589 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002590 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002591 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002592 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002593 )
2594 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002595 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 +01002596 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2597 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002598 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002599 return NULL;
2600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002601 int _end_lineno = _token->end_lineno;
2602 UNUSED(_end_lineno); // Only used by EXTRA macro
2603 int _end_col_offset = _token->end_col_offset;
2604 UNUSED(_end_col_offset); // Only used by EXTRA macro
2605 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2606 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002607 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002608 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002609 return NULL;
2610 }
2611 goto done;
2612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002613 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002614 D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2615 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002617 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002618 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002619 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002620 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002621}
2622
2623// nonlocal_stmt: 'nonlocal' ','.NAME+
2624static stmt_ty
2625nonlocal_stmt_rule(Parser *p)
2626{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002627 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002628 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002629 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002630 return NULL;
2631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002632 stmt_ty _res = NULL;
2633 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002634 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2635 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002636 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002637 return NULL;
2638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002639 int _start_lineno = p->tokens[_mark]->lineno;
2640 UNUSED(_start_lineno); // Only used by EXTRA macro
2641 int _start_col_offset = p->tokens[_mark]->col_offset;
2642 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002643 { // 'nonlocal' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002644 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002645 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002646 return NULL;
2647 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002648 D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002649 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002650 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002651 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002652 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002653 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002654 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002655 )
2656 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002657 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 +01002658 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2659 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002660 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002661 return NULL;
2662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002663 int _end_lineno = _token->end_lineno;
2664 UNUSED(_end_lineno); // Only used by EXTRA macro
2665 int _end_col_offset = _token->end_col_offset;
2666 UNUSED(_end_col_offset); // Only used by EXTRA macro
2667 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2668 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002669 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002670 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002671 return NULL;
2672 }
2673 goto done;
2674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002675 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002676 D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2677 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002679 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002680 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002681 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002682 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002683}
2684
2685// yield_stmt: yield_expr
2686static stmt_ty
2687yield_stmt_rule(Parser *p)
2688{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002689 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002690 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002691 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002692 return NULL;
2693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002694 stmt_ty _res = NULL;
2695 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002696 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2697 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002698 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002699 return NULL;
2700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002701 int _start_lineno = p->tokens[_mark]->lineno;
2702 UNUSED(_start_lineno); // Only used by EXTRA macro
2703 int _start_col_offset = p->tokens[_mark]->col_offset;
2704 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002705 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002706 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002707 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002708 return NULL;
2709 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002710 D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002711 expr_ty y;
2712 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002713 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 )
2715 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002716 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 +01002717 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2718 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002719 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002720 return NULL;
2721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002722 int _end_lineno = _token->end_lineno;
2723 UNUSED(_end_lineno); // Only used by EXTRA macro
2724 int _end_col_offset = _token->end_col_offset;
2725 UNUSED(_end_col_offset); // Only used by EXTRA macro
2726 _res = _Py_Expr ( y , EXTRA );
2727 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002728 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002729 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002730 return NULL;
2731 }
2732 goto done;
2733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002734 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002735 D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2736 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002738 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002739 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002740 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002741 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002742}
2743
2744// assert_stmt: 'assert' expression [',' expression]
2745static stmt_ty
2746assert_stmt_rule(Parser *p)
2747{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002748 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002749 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002750 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002751 return NULL;
2752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002753 stmt_ty _res = NULL;
2754 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002755 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2756 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002757 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002758 return NULL;
2759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002760 int _start_lineno = p->tokens[_mark]->lineno;
2761 UNUSED(_start_lineno); // Only used by EXTRA macro
2762 int _start_col_offset = p->tokens[_mark]->col_offset;
2763 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002764 { // 'assert' expression [',' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002765 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002766 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002767 return NULL;
2768 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002769 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 +01002770 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002771 expr_ty a;
2772 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002773 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002774 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002775 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002776 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002777 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002778 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002779 )
2780 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002781 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 +01002782 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2783 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002784 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002785 return NULL;
2786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002787 int _end_lineno = _token->end_lineno;
2788 UNUSED(_end_lineno); // Only used by EXTRA macro
2789 int _end_col_offset = _token->end_col_offset;
2790 UNUSED(_end_col_offset); // Only used by EXTRA macro
2791 _res = _Py_Assert ( a , b , EXTRA );
2792 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002793 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002794 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002795 return NULL;
2796 }
2797 goto done;
2798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002799 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002800 D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2801 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002803 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002804 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002805 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002806 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002807}
2808
2809// del_stmt: 'del' del_targets
2810static stmt_ty
2811del_stmt_rule(Parser *p)
2812{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002813 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002814 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002815 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002816 return NULL;
2817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002818 stmt_ty _res = NULL;
2819 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002820 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2821 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002822 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002823 return NULL;
2824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002825 int _start_lineno = p->tokens[_mark]->lineno;
2826 UNUSED(_start_lineno); // Only used by EXTRA macro
2827 int _start_col_offset = p->tokens[_mark]->col_offset;
2828 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002829 { // 'del' del_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002830 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002831 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002832 return NULL;
2833 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002834 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 +01002835 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002836 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002837 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002838 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002839 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002840 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002841 )
2842 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002843 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 +01002844 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2845 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002846 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002847 return NULL;
2848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002849 int _end_lineno = _token->end_lineno;
2850 UNUSED(_end_lineno); // Only used by EXTRA macro
2851 int _end_col_offset = _token->end_col_offset;
2852 UNUSED(_end_col_offset); // Only used by EXTRA macro
2853 _res = _Py_Delete ( a , EXTRA );
2854 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002855 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002856 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002857 return NULL;
2858 }
2859 goto done;
2860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002861 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002862 D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2863 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002865 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002866 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002867 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002868 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002869}
2870
2871// import_stmt: import_name | import_from
2872static stmt_ty
2873import_stmt_rule(Parser *p)
2874{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002875 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002876 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002877 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002878 return NULL;
2879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002880 stmt_ty _res = NULL;
2881 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002882 { // import_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002883 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002884 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002885 return NULL;
2886 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002887 D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002888 stmt_ty import_name_var;
2889 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002890 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002891 )
2892 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002893 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 +01002894 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002895 goto done;
2896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002897 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002898 D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2899 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900 }
2901 { // import_from
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002902 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002903 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002904 return NULL;
2905 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002906 D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002907 stmt_ty import_from_var;
2908 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002909 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002910 )
2911 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002912 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 +01002913 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002914 goto done;
2915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002916 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002917 D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2918 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002920 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002921 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002922 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002923 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002924}
2925
2926// import_name: 'import' dotted_as_names
2927static stmt_ty
2928import_name_rule(Parser *p)
2929{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002930 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002931 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002932 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002933 return NULL;
2934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 stmt_ty _res = NULL;
2936 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002937 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2938 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002939 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002940 return NULL;
2941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002942 int _start_lineno = p->tokens[_mark]->lineno;
2943 UNUSED(_start_lineno); // Only used by EXTRA macro
2944 int _start_col_offset = p->tokens[_mark]->col_offset;
2945 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002946 { // 'import' dotted_as_names
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002947 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002948 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002949 return NULL;
2950 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01002951 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 +01002952 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002953 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002954 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002955 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002957 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002958 )
2959 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002960 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 +01002961 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2962 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002963 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002964 return NULL;
2965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002966 int _end_lineno = _token->end_lineno;
2967 UNUSED(_end_lineno); // Only used by EXTRA macro
2968 int _end_col_offset = _token->end_col_offset;
2969 UNUSED(_end_col_offset); // Only used by EXTRA macro
2970 _res = _Py_Import ( a , EXTRA );
2971 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002972 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002973 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002974 return NULL;
2975 }
2976 goto done;
2977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002978 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01002979 D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
2980 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002982 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002983 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01002984 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002985 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002986}
2987
2988// import_from:
2989// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2990// | 'from' (('.' | '...'))+ 'import' import_from_targets
2991static stmt_ty
2992import_from_rule(Parser *p)
2993{
Pablo Galindo800a35c62020-05-25 18:38:45 +01002994 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002995 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01002996 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002997 return NULL;
2998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002999 stmt_ty _res = NULL;
3000 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003001 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3002 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003003 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003004 return NULL;
3005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003006 int _start_lineno = p->tokens[_mark]->lineno;
3007 UNUSED(_start_lineno); // Only used by EXTRA macro
3008 int _start_col_offset = p->tokens[_mark]->col_offset;
3009 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003010 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003011 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003012 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003013 return NULL;
3014 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003015 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 +01003016 Token * _keyword;
3017 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003018 asdl_seq * a;
3019 expr_ty b;
3020 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003021 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003022 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003023 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003024 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003025 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003026 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003027 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003028 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003029 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003030 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003031 )
3032 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003033 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 +01003034 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3035 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003036 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003037 return NULL;
3038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003039 int _end_lineno = _token->end_lineno;
3040 UNUSED(_end_lineno); // Only used by EXTRA macro
3041 int _end_col_offset = _token->end_col_offset;
3042 UNUSED(_end_col_offset); // Only used by EXTRA macro
3043 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3044 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003045 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003046 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003047 return NULL;
3048 }
3049 goto done;
3050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003051 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003052 D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3053 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003054 }
3055 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003056 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003057 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003058 return NULL;
3059 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003060 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 +01003061 Token * _keyword;
3062 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003063 asdl_seq * a;
3064 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003065 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003066 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003067 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003068 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003069 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003070 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003071 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003072 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003073 )
3074 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003075 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 +01003076 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3077 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003078 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003079 return NULL;
3080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003081 int _end_lineno = _token->end_lineno;
3082 UNUSED(_end_lineno); // Only used by EXTRA macro
3083 int _end_col_offset = _token->end_col_offset;
3084 UNUSED(_end_col_offset); // Only used by EXTRA macro
3085 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3086 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003087 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003088 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003089 return NULL;
3090 }
3091 goto done;
3092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003093 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003094 D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3095 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003097 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003098 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003099 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003100 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003101}
3102
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003103// import_from_targets:
3104// | '(' import_from_as_names ','? ')'
3105// | import_from_as_names !','
3106// | '*'
3107// | invalid_import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003108static asdl_seq*
3109import_from_targets_rule(Parser *p)
3110{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003111 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003112 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003113 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003114 return NULL;
3115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003116 asdl_seq* _res = NULL;
3117 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003118 { // '(' import_from_as_names ','? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003119 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003120 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003121 return NULL;
3122 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003123 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 +01003124 Token * _literal;
3125 Token * _literal_1;
3126 void *_opt_var;
3127 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003128 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003129 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003130 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003132 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003133 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003134 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003135 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003136 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003137 )
3138 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003139 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 +01003140 _res = a;
3141 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003142 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003143 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003144 return NULL;
3145 }
3146 goto done;
3147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003148 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003149 D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3150 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003151 }
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003152 { // import_from_as_names !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003153 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003154 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003155 return NULL;
3156 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003157 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 +01003158 asdl_seq* import_from_as_names_var;
3159 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003160 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003161 &&
3162 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003163 )
3164 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003165 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 +01003166 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003167 goto done;
3168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003169 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003170 D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3171 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003172 }
3173 { // '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003174 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003175 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003176 return NULL;
3177 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003178 D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003179 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003180 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003181 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003182 )
3183 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003184 D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003185 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
3186 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003187 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003188 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003189 return NULL;
3190 }
3191 goto done;
3192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003193 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003194 D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3195 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003196 }
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003197 { // invalid_import_from_targets
3198 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003199 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003200 return NULL;
3201 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003202 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 +03003203 void *invalid_import_from_targets_var;
3204 if (
3205 (invalid_import_from_targets_var = invalid_import_from_targets_rule(p)) // invalid_import_from_targets
3206 )
3207 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003208 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 +03003209 _res = invalid_import_from_targets_var;
3210 goto done;
3211 }
3212 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003213 D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3214 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +03003215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003216 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003217 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003218 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003219 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003220}
3221
3222// import_from_as_names: ','.import_from_as_name+
3223static asdl_seq*
3224import_from_as_names_rule(Parser *p)
3225{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003226 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003227 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003228 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003229 return NULL;
3230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003231 asdl_seq* _res = NULL;
3232 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003233 { // ','.import_from_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003234 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003235 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003236 return NULL;
3237 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003238 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 +01003239 asdl_seq * a;
3240 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003241 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003242 )
3243 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003244 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 +01003245 _res = a;
3246 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003247 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003248 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003249 return NULL;
3250 }
3251 goto done;
3252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003253 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003254 D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3255 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003257 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003258 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003259 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003260 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003261}
3262
3263// import_from_as_name: NAME ['as' NAME]
3264static alias_ty
3265import_from_as_name_rule(Parser *p)
3266{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003267 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003268 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003269 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003270 return NULL;
3271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003272 alias_ty _res = NULL;
3273 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003274 { // NAME ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003275 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003276 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003277 return NULL;
3278 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003279 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 +01003280 expr_ty a;
3281 void *b;
3282 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003283 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003284 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003285 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003286 )
3287 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003288 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 +01003289 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
3290 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003291 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003292 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003293 return NULL;
3294 }
3295 goto done;
3296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003297 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003298 D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3299 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003301 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003302 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003303 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003304 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003305}
3306
3307// dotted_as_names: ','.dotted_as_name+
3308static asdl_seq*
3309dotted_as_names_rule(Parser *p)
3310{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003311 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003312 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003313 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003314 return NULL;
3315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003316 asdl_seq* _res = NULL;
3317 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003318 { // ','.dotted_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003319 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003320 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003321 return NULL;
3322 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003323 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 +01003324 asdl_seq * a;
3325 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003326 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003327 )
3328 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003329 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 +01003330 _res = a;
3331 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003332 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003333 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003334 return NULL;
3335 }
3336 goto done;
3337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003338 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003339 D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3340 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003342 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003343 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003344 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003345 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003346}
3347
3348// dotted_as_name: dotted_name ['as' NAME]
3349static alias_ty
3350dotted_as_name_rule(Parser *p)
3351{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003352 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003353 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003354 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003355 return NULL;
3356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003357 alias_ty _res = NULL;
3358 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003359 { // dotted_name ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003360 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003361 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003362 return NULL;
3363 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003364 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 +01003365 expr_ty a;
3366 void *b;
3367 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003368 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003369 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003370 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003371 )
3372 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003373 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 +01003374 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
3375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003376 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003377 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 return NULL;
3379 }
3380 goto done;
3381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003382 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003383 D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3384 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003386 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003387 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003388 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003389 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003390}
3391
3392// Left-recursive
3393// dotted_name: dotted_name '.' NAME | NAME
3394static expr_ty dotted_name_raw(Parser *);
3395static expr_ty
3396dotted_name_rule(Parser *p)
3397{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003398 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003399 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003400 if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
3401 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003402 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003404 int _mark = p->mark;
3405 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003406 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003407 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003408 if (tmpvar_0) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003409 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003410 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003412 p->mark = _mark;
3413 void *_raw = dotted_name_raw(p);
3414 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003415 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003416 _resmark = p->mark;
3417 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003419 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003420 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003421 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003422}
3423static expr_ty
3424dotted_name_raw(Parser *p)
3425{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003426 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003427 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003428 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003429 return NULL;
3430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003431 expr_ty _res = NULL;
3432 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003433 { // dotted_name '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003434 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003435 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003436 return NULL;
3437 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003438 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 +01003439 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003440 expr_ty a;
3441 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003443 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003445 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003447 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003448 )
3449 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003450 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 +01003451 _res = _PyPegen_join_names_with_dot ( p , a , b );
3452 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003453 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003454 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003455 return NULL;
3456 }
3457 goto done;
3458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003459 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003460 D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3461 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003462 }
3463 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003464 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003465 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003466 return NULL;
3467 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003468 D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003469 expr_ty name_var;
3470 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003471 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003472 )
3473 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003474 D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003475 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003476 goto done;
3477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003478 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003479 D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3480 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003482 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003483 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003484 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003485 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003486}
3487
3488// if_stmt:
3489// | 'if' named_expression ':' block elif_stmt
3490// | 'if' named_expression ':' block else_block?
3491static stmt_ty
3492if_stmt_rule(Parser *p)
3493{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003494 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003495 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003496 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003497 return NULL;
3498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003499 stmt_ty _res = NULL;
3500 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003501 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3502 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003503 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003504 return NULL;
3505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003506 int _start_lineno = p->tokens[_mark]->lineno;
3507 UNUSED(_start_lineno); // Only used by EXTRA macro
3508 int _start_col_offset = p->tokens[_mark]->col_offset;
3509 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003510 { // 'if' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003511 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003512 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003513 return NULL;
3514 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003515 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 +01003516 Token * _keyword;
3517 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003518 expr_ty a;
3519 asdl_seq* b;
3520 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003521 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003522 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003523 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003524 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003525 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003526 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003527 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003528 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003529 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003530 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003531 )
3532 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003533 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 +01003534 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3535 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003536 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003537 return NULL;
3538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003539 int _end_lineno = _token->end_lineno;
3540 UNUSED(_end_lineno); // Only used by EXTRA macro
3541 int _end_col_offset = _token->end_col_offset;
3542 UNUSED(_end_col_offset); // Only used by EXTRA macro
3543 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3544 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003545 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003546 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003547 return NULL;
3548 }
3549 goto done;
3550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003551 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003552 D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3553 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003554 }
3555 { // 'if' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003556 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003557 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003558 return NULL;
3559 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003560 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 +01003561 Token * _keyword;
3562 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003563 expr_ty a;
3564 asdl_seq* b;
3565 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003566 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003567 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003568 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003569 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003570 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003571 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003572 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003573 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003574 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003575 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003576 )
3577 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003578 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 +01003579 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3580 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003581 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003582 return NULL;
3583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003584 int _end_lineno = _token->end_lineno;
3585 UNUSED(_end_lineno); // Only used by EXTRA macro
3586 int _end_col_offset = _token->end_col_offset;
3587 UNUSED(_end_col_offset); // Only used by EXTRA macro
3588 _res = _Py_If ( a , b , c , EXTRA );
3589 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003590 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003591 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003592 return NULL;
3593 }
3594 goto done;
3595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003596 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003597 D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3598 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003600 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003601 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003602 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003603 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003604}
3605
3606// elif_stmt:
3607// | 'elif' named_expression ':' block elif_stmt
3608// | 'elif' named_expression ':' block else_block?
3609static stmt_ty
3610elif_stmt_rule(Parser *p)
3611{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003612 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003613 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003614 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003615 return NULL;
3616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003617 stmt_ty _res = NULL;
3618 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003619 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3620 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003621 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003622 return NULL;
3623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003624 int _start_lineno = p->tokens[_mark]->lineno;
3625 UNUSED(_start_lineno); // Only used by EXTRA macro
3626 int _start_col_offset = p->tokens[_mark]->col_offset;
3627 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003628 { // 'elif' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003629 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003630 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003631 return NULL;
3632 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003633 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 +01003634 Token * _keyword;
3635 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003636 expr_ty a;
3637 asdl_seq* b;
3638 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003639 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003640 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003641 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003642 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003643 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003644 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003645 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003646 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003647 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003648 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003649 )
3650 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003651 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 +01003652 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3653 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003654 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003655 return NULL;
3656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003657 int _end_lineno = _token->end_lineno;
3658 UNUSED(_end_lineno); // Only used by EXTRA macro
3659 int _end_col_offset = _token->end_col_offset;
3660 UNUSED(_end_col_offset); // Only used by EXTRA macro
3661 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3662 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003663 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003664 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003665 return NULL;
3666 }
3667 goto done;
3668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003669 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003670 D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3671 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 }
3673 { // 'elif' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003674 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003675 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003676 return NULL;
3677 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003678 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 +01003679 Token * _keyword;
3680 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003681 expr_ty a;
3682 asdl_seq* b;
3683 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003684 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003685 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003686 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003687 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003688 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003689 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003690 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003691 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003692 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003693 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003694 )
3695 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003696 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 +01003697 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3698 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003699 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003700 return NULL;
3701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003702 int _end_lineno = _token->end_lineno;
3703 UNUSED(_end_lineno); // Only used by EXTRA macro
3704 int _end_col_offset = _token->end_col_offset;
3705 UNUSED(_end_col_offset); // Only used by EXTRA macro
3706 _res = _Py_If ( a , b , c , EXTRA );
3707 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003708 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003709 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003710 return NULL;
3711 }
3712 goto done;
3713 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003714 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003715 D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3716 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003718 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003719 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003720 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003721 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003722}
3723
3724// else_block: 'else' ':' block
3725static asdl_seq*
3726else_block_rule(Parser *p)
3727{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003728 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003729 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003730 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003731 return NULL;
3732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003733 asdl_seq* _res = NULL;
3734 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003735 { // 'else' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003736 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003737 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003738 return NULL;
3739 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003740 D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003741 Token * _keyword;
3742 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003743 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003744 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003745 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003746 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003747 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003748 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003749 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003750 )
3751 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003752 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 +01003753 _res = b;
3754 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003755 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003756 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003757 return NULL;
3758 }
3759 goto done;
3760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003761 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003762 D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
3763 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003765 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003766 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003767 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003768 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003769}
3770
3771// while_stmt: 'while' named_expression ':' block else_block?
3772static stmt_ty
3773while_stmt_rule(Parser *p)
3774{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003775 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003776 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003777 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003778 return NULL;
3779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003780 stmt_ty _res = NULL;
3781 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003782 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3783 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003784 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003785 return NULL;
3786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003787 int _start_lineno = p->tokens[_mark]->lineno;
3788 UNUSED(_start_lineno); // Only used by EXTRA macro
3789 int _start_col_offset = p->tokens[_mark]->col_offset;
3790 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003791 { // 'while' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003792 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003793 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003794 return NULL;
3795 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003796 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 +01003797 Token * _keyword;
3798 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003799 expr_ty a;
3800 asdl_seq* b;
3801 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003802 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003803 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003804 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003805 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003806 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003807 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003809 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003810 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003811 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003812 )
3813 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003814 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 +01003815 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3816 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003817 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003818 return NULL;
3819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003820 int _end_lineno = _token->end_lineno;
3821 UNUSED(_end_lineno); // Only used by EXTRA macro
3822 int _end_col_offset = _token->end_col_offset;
3823 UNUSED(_end_col_offset); // Only used by EXTRA macro
3824 _res = _Py_While ( a , b , c , EXTRA );
3825 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003826 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003827 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003828 return NULL;
3829 }
3830 goto done;
3831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003832 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003833 D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3834 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003836 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003837 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003838 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003839 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003840}
3841
Guido van Rossumc001c092020-04-30 12:12:19 -07003842// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003843// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
3844// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003845static stmt_ty
3846for_stmt_rule(Parser *p)
3847{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003848 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003849 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003850 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003851 return NULL;
3852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003853 stmt_ty _res = NULL;
3854 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003855 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3856 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003857 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003858 return NULL;
3859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003860 int _start_lineno = p->tokens[_mark]->lineno;
3861 UNUSED(_start_lineno); // Only used by EXTRA macro
3862 int _start_col_offset = p->tokens[_mark]->col_offset;
3863 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003864 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003865 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003866 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003867 return NULL;
3868 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003869 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 +01003870 Token * _keyword;
3871 Token * _keyword_1;
3872 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003873 asdl_seq* b;
3874 void *el;
3875 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003876 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003877 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003878 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003879 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003880 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003881 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003882 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003883 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003884 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003885 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003886 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003887 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003888 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003889 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003890 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003891 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003893 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003894 )
3895 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003896 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 +01003897 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3898 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003899 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003900 return NULL;
3901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003902 int _end_lineno = _token->end_lineno;
3903 UNUSED(_end_lineno); // Only used by EXTRA macro
3904 int _end_col_offset = _token->end_col_offset;
3905 UNUSED(_end_col_offset); // Only used by EXTRA macro
3906 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3907 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003908 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003909 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003910 return NULL;
3911 }
3912 goto done;
3913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003914 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003915 D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3916 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 +03003917 }
3918 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003919 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003920 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003921 return NULL;
3922 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01003923 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 +01003924 Token * _keyword;
3925 Token * _keyword_1;
3926 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003927 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003928 asdl_seq* b;
3929 void *el;
3930 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003931 expr_ty t;
3932 void *tc;
3933 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003934 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003935 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003936 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003937 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003938 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003939 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003940 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003942 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003943 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003944 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003945 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003946 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003947 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003948 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003950 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003951 )
3952 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003953 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 +01003954 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3955 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003956 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003957 return NULL;
3958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003959 int _end_lineno = _token->end_lineno;
3960 UNUSED(_end_lineno); // Only used by EXTRA macro
3961 int _end_col_offset = _token->end_col_offset;
3962 UNUSED(_end_col_offset); // Only used by EXTRA macro
3963 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3964 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003965 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003966 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003967 return NULL;
3968 }
3969 goto done;
3970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003971 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003972 D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3973 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 +01003974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003975 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003976 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01003977 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003978 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003979}
3980
3981// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003982// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003983// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003984// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003985// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003986static stmt_ty
3987with_stmt_rule(Parser *p)
3988{
Pablo Galindo800a35c62020-05-25 18:38:45 +01003989 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003990 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01003991 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003992 return NULL;
3993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003994 stmt_ty _res = NULL;
3995 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003996 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3997 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01003998 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003999 return NULL;
4000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004001 int _start_lineno = p->tokens[_mark]->lineno;
4002 UNUSED(_start_lineno); // Only used by EXTRA macro
4003 int _start_col_offset = p->tokens[_mark]->col_offset;
4004 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01004005 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004006 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004007 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004008 return NULL;
4009 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004010 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 +01004011 Token * _keyword;
4012 Token * _literal;
4013 Token * _literal_1;
4014 Token * _literal_2;
4015 void *_opt_var;
4016 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004017 asdl_seq * a;
4018 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004019 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004020 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004021 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004022 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004023 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004024 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004025 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004026 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01004027 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004028 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004029 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004030 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004031 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004032 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004033 )
4034 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004035 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 +01004036 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4037 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004038 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004039 return NULL;
4040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004041 int _end_lineno = _token->end_lineno;
4042 UNUSED(_end_lineno); // Only used by EXTRA macro
4043 int _end_col_offset = _token->end_col_offset;
4044 UNUSED(_end_col_offset); // Only used by EXTRA macro
4045 _res = _Py_With ( a , b , NULL , EXTRA );
4046 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004047 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004048 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004049 return NULL;
4050 }
4051 goto done;
4052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004053 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004054 D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4055 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004056 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004057 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004058 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004059 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004060 return NULL;
4061 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004062 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 +01004063 Token * _keyword;
4064 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004065 asdl_seq * a;
4066 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004067 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004068 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004069 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004070 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004071 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004072 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004073 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004074 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004075 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004076 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004077 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004078 )
4079 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004080 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 +01004081 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4082 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004083 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004084 return NULL;
4085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004086 int _end_lineno = _token->end_lineno;
4087 UNUSED(_end_lineno); // Only used by EXTRA macro
4088 int _end_col_offset = _token->end_col_offset;
4089 UNUSED(_end_col_offset); // Only used by EXTRA macro
4090 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4091 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004092 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004093 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004094 return NULL;
4095 }
4096 goto done;
4097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004098 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004099 D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4100 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004101 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01004102 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004103 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004104 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004105 return NULL;
4106 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004107 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 +01004108 Token * _keyword;
4109 Token * _literal;
4110 Token * _literal_1;
4111 Token * _literal_2;
4112 void *_opt_var;
4113 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004114 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004115 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004116 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004117 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004118 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004119 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004120 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004121 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004122 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004123 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004124 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004125 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004126 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01004127 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004128 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004129 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004130 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004132 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004133 )
4134 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004135 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 +01004136 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4137 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004138 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004139 return NULL;
4140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004141 int _end_lineno = _token->end_lineno;
4142 UNUSED(_end_lineno); // Only used by EXTRA macro
4143 int _end_col_offset = _token->end_col_offset;
4144 UNUSED(_end_col_offset); // Only used by EXTRA macro
4145 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
4146 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004147 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004148 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004149 return NULL;
4150 }
4151 goto done;
4152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004153 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004154 D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4155 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004156 }
4157 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004158 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004159 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004160 return NULL;
4161 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004162 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 +01004163 Token * _keyword;
4164 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004165 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004166 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004167 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004168 void *tc;
4169 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004170 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004171 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004172 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004173 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004174 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004175 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004176 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004177 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004178 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004179 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004180 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004181 )
4182 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004183 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 +01004184 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4185 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004186 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004187 return NULL;
4188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004189 int _end_lineno = _token->end_lineno;
4190 UNUSED(_end_lineno); // Only used by EXTRA macro
4191 int _end_col_offset = _token->end_col_offset;
4192 UNUSED(_end_col_offset); // Only used by EXTRA macro
4193 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
4194 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004195 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004196 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004197 return NULL;
4198 }
4199 goto done;
4200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004201 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004202 D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4203 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004205 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004206 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004207 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004208 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004209}
4210
4211// with_item: expression ['as' target]
4212static withitem_ty
4213with_item_rule(Parser *p)
4214{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004215 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004216 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004217 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004218 return NULL;
4219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004220 withitem_ty _res = NULL;
4221 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004222 { // expression ['as' target]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004223 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004224 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004225 return NULL;
4226 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004227 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 +01004228 expr_ty e;
4229 void *o;
4230 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004231 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004232 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004233 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004234 )
4235 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004236 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 +01004237 _res = _Py_withitem ( e , o , p -> arena );
4238 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004239 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004240 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004241 return NULL;
4242 }
4243 goto done;
4244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004245 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004246 D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
4247 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' target]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004249 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004250 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004251 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004252 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004253}
4254
4255// try_stmt:
4256// | 'try' ':' block finally_block
4257// | 'try' ':' block except_block+ else_block? finally_block?
4258static stmt_ty
4259try_stmt_rule(Parser *p)
4260{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004261 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004262 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004263 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004264 return NULL;
4265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004266 stmt_ty _res = NULL;
4267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4269 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004270 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004271 return NULL;
4272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004273 int _start_lineno = p->tokens[_mark]->lineno;
4274 UNUSED(_start_lineno); // Only used by EXTRA macro
4275 int _start_col_offset = p->tokens[_mark]->col_offset;
4276 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004277 { // 'try' ':' block finally_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004278 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004279 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004280 return NULL;
4281 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004282 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 +01004283 Token * _keyword;
4284 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004285 asdl_seq* b;
4286 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004287 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004288 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004289 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004290 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004291 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004292 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004293 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004294 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004295 )
4296 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004297 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 +01004298 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4299 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004300 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004301 return NULL;
4302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004303 int _end_lineno = _token->end_lineno;
4304 UNUSED(_end_lineno); // Only used by EXTRA macro
4305 int _end_col_offset = _token->end_col_offset;
4306 UNUSED(_end_col_offset); // Only used by EXTRA macro
4307 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
4308 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004309 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004310 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004311 return NULL;
4312 }
4313 goto done;
4314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004315 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004316 D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4317 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block finally_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004318 }
4319 { // 'try' ':' block except_block+ else_block? finally_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004320 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004321 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004322 return NULL;
4323 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004324 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 +01004325 Token * _keyword;
4326 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004327 asdl_seq* b;
4328 void *el;
4329 asdl_seq * ex;
4330 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004331 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004332 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004333 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004334 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004335 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004336 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004337 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004338 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004339 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004340 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004341 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004342 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004343 )
4344 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004345 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 +01004346 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4347 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004348 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004349 return NULL;
4350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004351 int _end_lineno = _token->end_lineno;
4352 UNUSED(_end_lineno); // Only used by EXTRA macro
4353 int _end_col_offset = _token->end_col_offset;
4354 UNUSED(_end_col_offset); // Only used by EXTRA macro
4355 _res = _Py_Try ( b , ex , el , f , EXTRA );
4356 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004357 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004358 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004359 return NULL;
4360 }
4361 goto done;
4362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004363 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004364 D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4365 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block except_block+ else_block? finally_block?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004367 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004368 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004369 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004370 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004371}
4372
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03004373// except_block: 'except' expression ['as' NAME] ':' block | 'except' ':' block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004374static excepthandler_ty
4375except_block_rule(Parser *p)
4376{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004377 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004378 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004379 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004380 return NULL;
4381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004382 excepthandler_ty _res = NULL;
4383 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004384 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4385 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004386 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004387 return NULL;
4388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004389 int _start_lineno = p->tokens[_mark]->lineno;
4390 UNUSED(_start_lineno); // Only used by EXTRA macro
4391 int _start_col_offset = p->tokens[_mark]->col_offset;
4392 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03004393 { // 'except' expression ['as' NAME] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004394 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004395 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004396 return NULL;
4397 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004398 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 +01004399 Token * _keyword;
4400 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004401 asdl_seq* b;
4402 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004403 void *t;
4404 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004405 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004406 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004407 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004408 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03004409 (t = _tmp_48_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004410 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004411 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004412 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004413 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004414 )
4415 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004416 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 +01004417 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4418 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004419 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004420 return NULL;
4421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004422 int _end_lineno = _token->end_lineno;
4423 UNUSED(_end_lineno); // Only used by EXTRA macro
4424 int _end_col_offset = _token->end_col_offset;
4425 UNUSED(_end_col_offset); // Only used by EXTRA macro
4426 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
4427 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004428 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004429 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004430 return NULL;
4431 }
4432 goto done;
4433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004434 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004435 D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
4436 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004437 }
4438 { // 'except' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004439 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004440 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004441 return NULL;
4442 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004443 D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004444 Token * _keyword;
4445 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004446 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004447 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004448 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004449 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004450 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004452 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004453 )
4454 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004455 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 +01004456 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4457 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004458 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004459 return NULL;
4460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004461 int _end_lineno = _token->end_lineno;
4462 UNUSED(_end_lineno); // Only used by EXTRA macro
4463 int _end_col_offset = _token->end_col_offset;
4464 UNUSED(_end_col_offset); // Only used by EXTRA macro
4465 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
4466 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004467 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004468 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004469 return NULL;
4470 }
4471 goto done;
4472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004473 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004474 D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
4475 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004477 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004478 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004479 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004480 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004481}
4482
4483// finally_block: 'finally' ':' block
4484static asdl_seq*
4485finally_block_rule(Parser *p)
4486{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004487 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004488 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004489 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004490 return NULL;
4491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004492 asdl_seq* _res = NULL;
4493 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004494 { // 'finally' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004495 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004496 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004497 return NULL;
4498 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004499 D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004500 Token * _keyword;
4501 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004502 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004503 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004504 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004505 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004506 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004507 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004508 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004509 )
4510 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004511 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 +01004512 _res = a;
4513 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004514 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004515 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004516 return NULL;
4517 }
4518 goto done;
4519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004520 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004521 D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
4522 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004524 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004525 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004526 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004527 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004528}
4529
4530// return_stmt: 'return' star_expressions?
4531static stmt_ty
4532return_stmt_rule(Parser *p)
4533{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004534 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004535 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004536 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004537 return NULL;
4538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004539 stmt_ty _res = NULL;
4540 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004541 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4542 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004543 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004544 return NULL;
4545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004546 int _start_lineno = p->tokens[_mark]->lineno;
4547 UNUSED(_start_lineno); // Only used by EXTRA macro
4548 int _start_col_offset = p->tokens[_mark]->col_offset;
4549 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004550 { // 'return' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004551 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004552 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004553 return NULL;
4554 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004555 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 +01004556 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004557 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004558 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004559 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004560 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004561 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004562 )
4563 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004564 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 +01004565 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4566 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004567 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004568 return NULL;
4569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004570 int _end_lineno = _token->end_lineno;
4571 UNUSED(_end_lineno); // Only used by EXTRA macro
4572 int _end_col_offset = _token->end_col_offset;
4573 UNUSED(_end_col_offset); // Only used by EXTRA macro
4574 _res = _Py_Return ( a , EXTRA );
4575 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004576 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004577 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004578 return NULL;
4579 }
4580 goto done;
4581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004582 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004583 D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4584 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004586 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004587 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004588 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004589 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004590}
4591
4592// raise_stmt: 'raise' expression ['from' expression] | 'raise'
4593static stmt_ty
4594raise_stmt_rule(Parser *p)
4595{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004596 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004597 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004598 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004599 return NULL;
4600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004601 stmt_ty _res = NULL;
4602 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004603 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4604 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004605 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004606 return NULL;
4607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004608 int _start_lineno = p->tokens[_mark]->lineno;
4609 UNUSED(_start_lineno); // Only used by EXTRA macro
4610 int _start_col_offset = p->tokens[_mark]->col_offset;
4611 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004612 { // 'raise' expression ['from' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004613 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004614 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004615 return NULL;
4616 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004617 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 +01004618 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004619 expr_ty a;
4620 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004621 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004622 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004623 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004624 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004625 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004626 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004627 )
4628 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004629 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 +01004630 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4631 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004632 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004633 return NULL;
4634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004635 int _end_lineno = _token->end_lineno;
4636 UNUSED(_end_lineno); // Only used by EXTRA macro
4637 int _end_col_offset = _token->end_col_offset;
4638 UNUSED(_end_col_offset); // Only used by EXTRA macro
4639 _res = _Py_Raise ( a , b , EXTRA );
4640 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004641 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004642 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004643 return NULL;
4644 }
4645 goto done;
4646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004647 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004648 D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4649 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression ['from' expression]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004650 }
4651 { // 'raise'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004652 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004653 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004654 return NULL;
4655 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004656 D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004657 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004658 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004659 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004660 )
4661 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004662 D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004663 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4664 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004665 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004666 return NULL;
4667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004668 int _end_lineno = _token->end_lineno;
4669 UNUSED(_end_lineno); // Only used by EXTRA macro
4670 int _end_col_offset = _token->end_col_offset;
4671 UNUSED(_end_col_offset); // Only used by EXTRA macro
4672 _res = _Py_Raise ( NULL , NULL , EXTRA );
4673 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004674 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004675 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004676 return NULL;
4677 }
4678 goto done;
4679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004680 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004681 D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4682 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004684 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004685 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004686 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004687 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004688}
4689
4690// function_def: decorators function_def_raw | function_def_raw
4691static stmt_ty
4692function_def_rule(Parser *p)
4693{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004694 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004695 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004696 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004697 return NULL;
4698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004699 stmt_ty _res = NULL;
4700 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004701 { // decorators function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004702 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004703 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004704 return NULL;
4705 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004706 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 +01004707 asdl_seq* d;
4708 stmt_ty f;
4709 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004710 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004711 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004712 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004713 )
4714 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004715 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 +01004716 _res = _PyPegen_function_def_decorators ( p , d , f );
4717 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004718 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004719 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004720 return NULL;
4721 }
4722 goto done;
4723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004724 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004725 D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4726 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004727 }
4728 { // function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004729 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004730 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004731 return NULL;
4732 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004733 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 +01004734 stmt_ty function_def_raw_var;
4735 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004736 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004737 )
4738 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004739 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 +01004740 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004741 goto done;
4742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004743 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004744 D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4745 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004747 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004748 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004749 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004750 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004751}
4752
Guido van Rossumc001c092020-04-30 12:12:19 -07004753// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004754// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
4755// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004756static stmt_ty
4757function_def_raw_rule(Parser *p)
4758{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004759 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004760 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004761 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004762 return NULL;
4763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004764 stmt_ty _res = NULL;
4765 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004766 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4767 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004768 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004769 return NULL;
4770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004771 int _start_lineno = p->tokens[_mark]->lineno;
4772 UNUSED(_start_lineno); // Only used by EXTRA macro
4773 int _start_col_offset = p->tokens[_mark]->col_offset;
4774 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004775 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004776 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004777 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004778 return NULL;
4779 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004780 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 +01004781 Token * _keyword;
4782 Token * _literal;
4783 Token * _literal_1;
4784 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004785 void *a;
4786 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004787 expr_ty n;
4788 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07004789 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004790 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004791 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004792 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004793 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004794 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004795 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004797 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004798 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004799 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004800 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004801 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004802 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004803 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004804 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004805 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07004806 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004807 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004808 )
4809 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004810 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 +01004811 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4812 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004813 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004814 return NULL;
4815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004816 int _end_lineno = _token->end_lineno;
4817 UNUSED(_end_lineno); // Only used by EXTRA macro
4818 int _end_col_offset = _token->end_col_offset;
4819 UNUSED(_end_col_offset); // Only used by EXTRA macro
4820 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4821 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004822 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004823 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004824 return NULL;
4825 }
4826 goto done;
4827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004828 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004829 D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4830 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004831 }
4832 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004833 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004834 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004835 return NULL;
4836 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004837 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 +01004838 Token * _keyword;
4839 Token * _literal;
4840 Token * _literal_1;
4841 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004842 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004843 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004844 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004845 expr_ty n;
4846 void *params;
4847 void *tc;
4848 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004849 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004850 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004851 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004852 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004853 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004854 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004855 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004856 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004857 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004858 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004859 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004860 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004861 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004862 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004863 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004864 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004865 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004866 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004867 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004868 )
4869 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004870 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 +01004871 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4872 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004873 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004874 return NULL;
4875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004876 int _end_lineno = _token->end_lineno;
4877 UNUSED(_end_lineno); // Only used by EXTRA macro
4878 int _end_col_offset = _token->end_col_offset;
4879 UNUSED(_end_col_offset); // Only used by EXTRA macro
4880 _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 ) );
4881 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004882 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004883 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004884 return NULL;
4885 }
4886 goto done;
4887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004888 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004889 D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4890 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004892 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004893 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004894 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004895 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004896}
4897
Guido van Rossumc001c092020-04-30 12:12:19 -07004898// func_type_comment:
4899// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
4900// | invalid_double_type_comments
4901// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01004902static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07004903func_type_comment_rule(Parser *p)
4904{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004905 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -07004906 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004907 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07004908 return NULL;
4909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004910 Token* _res = NULL;
4911 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004912 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004913 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004914 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004915 return NULL;
4916 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004917 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 +01004918 Token * newline_var;
4919 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07004920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004921 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07004922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004923 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004924 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004925 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07004926 )
4927 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004928 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 +01004929 _res = t;
4930 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004931 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004932 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07004933 return NULL;
4934 }
4935 goto done;
4936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004937 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004938 D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
4939 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
Guido van Rossumc001c092020-04-30 12:12:19 -07004940 }
4941 { // invalid_double_type_comments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004942 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004943 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004944 return NULL;
4945 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004946 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 -07004947 void *invalid_double_type_comments_var;
4948 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004949 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07004950 )
4951 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004952 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 +01004953 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004954 goto done;
4955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004956 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004957 D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
4958 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
Guido van Rossumc001c092020-04-30 12:12:19 -07004959 }
4960 { // TYPE_COMMENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004961 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004962 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004963 return NULL;
4964 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01004965 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 +01004966 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004967 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004968 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004969 )
4970 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004971 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 +01004972 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004973 goto done;
4974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004975 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01004976 D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
4977 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
Guido van Rossumc001c092020-04-30 12:12:19 -07004978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004979 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004980 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01004981 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004982 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004983}
4984
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004985// params: invalid_parameters | parameters
4986static arguments_ty
4987params_rule(Parser *p)
4988{
Pablo Galindo800a35c62020-05-25 18:38:45 +01004989 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004990 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004991 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004992 return NULL;
4993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004994 arguments_ty _res = NULL;
4995 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004996 { // invalid_parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004997 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01004998 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004999 return NULL;
5000 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005001 D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005002 void *invalid_parameters_var;
5003 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005004 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005005 )
5006 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005007 D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005008 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005009 goto done;
5010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005011 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005012 D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
5013 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005014 }
5015 { // parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005016 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005017 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005018 return NULL;
5019 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005020 D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005021 arguments_ty parameters_var;
5022 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005023 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005024 )
5025 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005026 D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005027 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005028 goto done;
5029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005030 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005031 D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
5032 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005034 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005035 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005036 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005037 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005038}
5039
5040// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07005041// | slash_no_default param_no_default* param_with_default* star_etc?
5042// | slash_with_default param_with_default* star_etc?
5043// | param_no_default+ param_with_default* star_etc?
5044// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005045// | star_etc
5046static arguments_ty
5047parameters_rule(Parser *p)
5048{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005049 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005050 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005051 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005052 return NULL;
5053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005054 arguments_ty _res = NULL;
5055 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005056 { // slash_no_default param_no_default* param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005057 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005058 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005059 return NULL;
5060 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005061 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 +01005062 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07005063 asdl_seq * b;
5064 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005065 void *d;
5066 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005067 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005068 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005069 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005070 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005071 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005072 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005073 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005074 )
5075 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005076 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 +01005077 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5078 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005079 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005080 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005081 return NULL;
5082 }
5083 goto done;
5084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005085 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005086 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5087 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 +01005088 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005089 { // slash_with_default param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005090 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005091 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005092 return NULL;
5093 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005094 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 +01005095 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07005096 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005097 void *c;
5098 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005099 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005100 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005101 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005102 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005103 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005104 )
5105 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005106 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 +01005107 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5108 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005109 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005110 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005111 return NULL;
5112 }
5113 goto done;
5114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005115 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005116 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5117 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005118 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005119 { // param_no_default+ param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005120 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005121 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005122 return NULL;
5123 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005124 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 -07005125 asdl_seq * a;
5126 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005127 void *c;
5128 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005129 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005130 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005131 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005132 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005133 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005134 )
5135 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005136 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 +01005137 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5138 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005139 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005140 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005141 return NULL;
5142 }
5143 goto done;
5144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005145 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005146 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5147 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005148 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005149 { // param_with_default+ star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005150 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005151 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005152 return NULL;
5153 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005154 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 -07005155 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005156 void *b;
5157 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005158 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005159 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005160 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005161 )
5162 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005163 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 +01005164 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5165 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005166 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005167 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168 return NULL;
5169 }
5170 goto done;
5171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005172 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005173 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5174 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005175 }
5176 { // star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005177 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005178 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005179 return NULL;
5180 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005181 D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005182 StarEtc* a;
5183 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005184 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005185 )
5186 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005187 D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005188 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5189 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005190 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005191 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005192 return NULL;
5193 }
5194 goto done;
5195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005196 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005197 D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5198 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005200 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005201 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005202 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005203 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005204}
5205
Guido van Rossumc001c092020-04-30 12:12:19 -07005206// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005207static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07005208slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005209{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005210 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005211 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005212 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005213 return NULL;
5214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005215 asdl_seq* _res = NULL;
5216 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005217 { // param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005218 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005219 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005220 return NULL;
5221 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005222 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 +01005223 Token * _literal;
5224 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07005225 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005226 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005227 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005228 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005229 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005230 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005231 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07005232 )
5233 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005234 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 +01005235 _res = a;
5236 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005237 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005238 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005239 return NULL;
5240 }
5241 goto done;
5242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005243 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005244 D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5245 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005246 }
5247 { // param_no_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005248 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005249 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005250 return NULL;
5251 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005252 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 +01005253 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005254 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07005255 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005256 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07005257 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005258 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07005259 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005260 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005261 )
5262 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005263 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 +01005264 _res = a;
5265 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005266 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005267 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005268 return NULL;
5269 }
5270 goto done;
5271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005272 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005273 D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5274 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005276 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005277 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005278 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005279 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005280}
5281
Guido van Rossumc001c092020-04-30 12:12:19 -07005282// slash_with_default:
5283// | param_no_default* param_with_default+ '/' ','
5284// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005285static SlashWithDefault*
5286slash_with_default_rule(Parser *p)
5287{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005288 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005289 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005290 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005291 return NULL;
5292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005293 SlashWithDefault* _res = NULL;
5294 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005295 { // param_no_default* param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005296 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005297 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005298 return NULL;
5299 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005300 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 +01005301 Token * _literal;
5302 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07005303 asdl_seq * a;
5304 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005305 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005306 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005307 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005308 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005309 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005310 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005311 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005312 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07005313 )
5314 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005315 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 +01005316 _res = _PyPegen_slash_with_default ( p , a , b );
5317 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005318 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005319 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005320 return NULL;
5321 }
5322 goto done;
5323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005324 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005325 D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5326 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005327 }
5328 { // param_no_default* param_with_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005329 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005330 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005331 return NULL;
5332 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005333 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 +01005334 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005335 asdl_seq * a;
5336 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07005337 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005338 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07005339 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005340 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07005341 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005342 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07005343 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005344 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005345 )
5346 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005347 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 +01005348 _res = _PyPegen_slash_with_default ( p , a , b );
5349 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005350 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005351 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005352 return NULL;
5353 }
5354 goto done;
5355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005356 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005357 D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5358 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005360 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005361 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005362 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005363 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005364}
5365
5366// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07005367// | '*' param_no_default param_maybe_default* kwds?
5368// | '*' ',' param_maybe_default+ kwds?
5369// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005370// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005371static StarEtc*
5372star_etc_rule(Parser *p)
5373{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005374 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005375 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005376 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005377 return NULL;
5378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005379 StarEtc* _res = NULL;
5380 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005381 { // '*' param_no_default param_maybe_default* kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005382 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005383 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005384 return NULL;
5385 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005386 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 +01005387 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005388 arg_ty a;
5389 asdl_seq * b;
5390 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005391 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005392 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005393 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005394 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005395 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005396 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005397 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005398 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005399 )
5400 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005401 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 +01005402 _res = _PyPegen_star_etc ( p , a , b , c );
5403 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005404 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005405 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005406 return NULL;
5407 }
5408 goto done;
5409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005410 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005411 D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5412 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005413 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005414 { // '*' ',' param_maybe_default+ kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005415 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005416 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005417 return NULL;
5418 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005419 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 +01005420 Token * _literal;
5421 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005422 asdl_seq * b;
5423 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005424 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005425 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005426 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005427 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005428 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005429 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005430 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005431 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005432 )
5433 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005434 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 +01005435 _res = _PyPegen_star_etc ( p , NULL , b , c );
5436 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005437 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005438 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005439 return NULL;
5440 }
5441 goto done;
5442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005443 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005444 D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5445 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005446 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005447 { // kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005448 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005449 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005450 return NULL;
5451 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005452 D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005453 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005454 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005455 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005456 )
5457 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005458 D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005459 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5460 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005461 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005462 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005463 return NULL;
5464 }
5465 goto done;
5466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005467 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005468 D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5469 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005470 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005471 { // invalid_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005472 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005473 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005474 return NULL;
5475 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005476 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 +03005477 void *invalid_star_etc_var;
5478 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005479 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005480 )
5481 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005482 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 +01005483 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005484 goto done;
5485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005486 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005487 D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5488 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005490 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005491 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005492 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005493 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005494}
5495
Guido van Rossumc001c092020-04-30 12:12:19 -07005496// kwds: '**' param_no_default
5497static arg_ty
5498kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005499{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005500 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005501 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005502 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005503 return NULL;
5504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005505 arg_ty _res = NULL;
5506 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005507 { // '**' param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005508 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005509 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005510 return NULL;
5511 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005512 D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005513 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005514 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005515 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005516 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07005517 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005518 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07005519 )
5520 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005521 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 +01005522 _res = a;
5523 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005524 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005525 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005526 return NULL;
5527 }
5528 goto done;
5529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005530 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005531 D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5532 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005534 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07005535 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005536 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005537 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07005538}
5539
5540// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
5541static arg_ty
5542param_no_default_rule(Parser *p)
5543{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005544 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -07005545 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005546 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005547 return NULL;
5548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005549 arg_ty _res = NULL;
5550 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005551 { // param ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005552 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005553 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005554 return NULL;
5555 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005556 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 +01005557 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005558 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07005559 void *tc;
5560 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005561 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005562 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005563 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005564 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005565 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005566 )
5567 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005568 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 +01005569 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5570 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005571 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005572 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005573 return NULL;
5574 }
5575 goto done;
5576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005577 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005578 D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5579 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005580 }
Guido van Rossumc001c092020-04-30 12:12:19 -07005581 { // param TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005582 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005583 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005584 return NULL;
5585 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005586 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 -07005587 arg_ty a;
5588 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005589 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005590 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005591 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005592 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07005593 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005594 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005595 )
5596 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005597 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 +01005598 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5599 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005600 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005601 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005602 return NULL;
5603 }
5604 goto done;
5605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005606 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005607 D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5608 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005610 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005611 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005612 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005613 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005614}
5615
Guido van Rossumc001c092020-04-30 12:12:19 -07005616// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005617static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07005618param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005619{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005620 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005621 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005622 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005623 return NULL;
5624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005625 NameDefaultPair* _res = NULL;
5626 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005627 { // param default ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005628 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005629 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005630 return NULL;
5631 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005632 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 +01005633 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005634 arg_ty a;
5635 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07005636 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005637 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005638 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005639 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005640 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005641 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005642 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07005643 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005644 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005645 )
5646 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005647 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 +01005648 _res = _PyPegen_name_default_pair ( p , a , c , tc );
5649 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005650 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005651 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005652 return NULL;
5653 }
5654 goto done;
5655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005656 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005657 D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5658 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005659 }
5660 { // param default TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005661 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005662 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005663 return NULL;
5664 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005665 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 -07005666 arg_ty a;
5667 expr_ty c;
5668 void *tc;
5669 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005670 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005671 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005672 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07005673 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005674 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07005675 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005676 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07005677 )
5678 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005679 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 +01005680 _res = _PyPegen_name_default_pair ( p , a , c , tc );
5681 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005682 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005683 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005684 return NULL;
5685 }
5686 goto done;
5687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005688 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005689 D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5690 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005692 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005693 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005694 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005696}
5697
Guido van Rossumc001c092020-04-30 12:12:19 -07005698// param_maybe_default:
5699// | param default? ',' TYPE_COMMENT?
5700// | param default? TYPE_COMMENT? &')'
5701static NameDefaultPair*
5702param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005703{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005704 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005705 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005706 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005707 return NULL;
5708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005709 NameDefaultPair* _res = NULL;
5710 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005711 { // param default? ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005712 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005713 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005714 return NULL;
5715 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005716 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 +01005717 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005718 arg_ty a;
5719 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07005720 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005721 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005722 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005723 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005724 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07005725 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005726 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07005727 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005728 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005729 )
5730 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005731 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 +01005732 _res = _PyPegen_name_default_pair ( p , a , c , tc );
5733 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005734 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005735 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005736 return NULL;
5737 }
5738 goto done;
5739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005740 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005741 D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5742 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
Guido van Rossumc001c092020-04-30 12:12:19 -07005743 }
5744 { // param default? TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005745 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005746 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005747 return NULL;
5748 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005749 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 -07005750 arg_ty a;
5751 void *c;
5752 void *tc;
5753 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005754 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07005755 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005756 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07005757 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005758 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07005759 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005760 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07005761 )
5762 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005763 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 +01005764 _res = _PyPegen_name_default_pair ( p , a , c , tc );
5765 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005766 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005767 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005768 return NULL;
5769 }
5770 goto done;
5771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005772 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005773 D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5774 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005776 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005777 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005778 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005779 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005780}
5781
Guido van Rossumc001c092020-04-30 12:12:19 -07005782// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005783static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07005784param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005785{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005786 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005787 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005788 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005789 return NULL;
5790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005791 arg_ty _res = NULL;
5792 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005793 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5794 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005795 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005796 return NULL;
5797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005798 int _start_lineno = p->tokens[_mark]->lineno;
5799 UNUSED(_start_lineno); // Only used by EXTRA macro
5800 int _start_col_offset = p->tokens[_mark]->col_offset;
5801 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07005802 { // NAME annotation?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005803 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005804 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005805 return NULL;
5806 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005807 D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005808 expr_ty a;
5809 void *b;
5810 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005811 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005812 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005813 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005814 )
5815 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005816 D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005817 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5818 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005819 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005820 return NULL;
5821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005822 int _end_lineno = _token->end_lineno;
5823 UNUSED(_end_lineno); // Only used by EXTRA macro
5824 int _end_col_offset = _token->end_col_offset;
5825 UNUSED(_end_col_offset); // Only used by EXTRA macro
5826 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
5827 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005828 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005829 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005830 return NULL;
5831 }
5832 goto done;
5833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005834 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005835 D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5836 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005838 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005839 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005840 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005841 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005842}
5843
Guido van Rossumc001c092020-04-30 12:12:19 -07005844// annotation: ':' expression
5845static expr_ty
5846annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005847{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005848 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005849 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005850 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005851 return NULL;
5852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005853 expr_ty _res = NULL;
5854 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005855 { // ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005856 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005857 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005858 return NULL;
5859 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005860 D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005861 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005862 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005863 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005864 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005865 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005866 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005867 )
5868 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005869 D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005870 _res = a;
5871 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005872 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005873 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005874 return NULL;
5875 }
5876 goto done;
5877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005878 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005879 D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5880 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005882 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005883 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005884 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005885 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005886}
5887
Guido van Rossumc001c092020-04-30 12:12:19 -07005888// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005889static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07005890default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005891{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005892 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005893 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005894 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005895 return NULL;
5896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005897 expr_ty _res = NULL;
5898 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07005899 { // '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005900 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005901 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005902 return NULL;
5903 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005904 D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005905 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07005906 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005907 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005908 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07005909 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005910 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005911 )
5912 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005913 D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005914 _res = a;
5915 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07005916 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005917 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -07005918 return NULL;
5919 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005920 goto done;
5921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005922 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005923 D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5924 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005926 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005927 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005928 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005929 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005930}
5931
5932// decorators: (('@' named_expression NEWLINE))+
5933static asdl_seq*
5934decorators_rule(Parser *p)
5935{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005936 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005937 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005938 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005939 return NULL;
5940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005941 asdl_seq* _res = NULL;
5942 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005943 { // (('@' named_expression NEWLINE))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005944 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005945 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005946 return NULL;
5947 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005948 D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005949 asdl_seq * a;
5950 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005951 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005952 )
5953 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005954 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 +01005955 _res = a;
5956 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005957 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005958 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005959 return NULL;
5960 }
5961 goto done;
5962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005963 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01005964 D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
5965 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005967 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005968 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01005969 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005970 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005971}
5972
5973// class_def: decorators class_def_raw | class_def_raw
5974static stmt_ty
5975class_def_rule(Parser *p)
5976{
Pablo Galindo800a35c62020-05-25 18:38:45 +01005977 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005978 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005979 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005980 return NULL;
5981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005982 stmt_ty _res = NULL;
5983 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005984 { // decorators class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005985 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005986 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005987 return NULL;
5988 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01005989 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 +01005990 asdl_seq* a;
5991 stmt_ty b;
5992 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005993 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005994 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005995 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005996 )
5997 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01005998 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 +01005999 _res = _PyPegen_class_def_decorators ( p , a , b );
6000 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006001 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006002 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006003 return NULL;
6004 }
6005 goto done;
6006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006007 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006008 D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
6009 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006010 }
6011 { // class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006012 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006013 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006014 return NULL;
6015 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006016 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 +01006017 stmt_ty class_def_raw_var;
6018 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006019 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006020 )
6021 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006022 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 +01006023 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006024 goto done;
6025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006026 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006027 D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
6028 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006030 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006031 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006032 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006033 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006034}
6035
6036// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
6037static stmt_ty
6038class_def_raw_rule(Parser *p)
6039{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006040 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006041 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006042 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006043 return NULL;
6044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006045 stmt_ty _res = NULL;
6046 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006047 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6048 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006049 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006050 return NULL;
6051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006052 int _start_lineno = p->tokens[_mark]->lineno;
6053 UNUSED(_start_lineno); // Only used by EXTRA macro
6054 int _start_col_offset = p->tokens[_mark]->col_offset;
6055 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006056 { // 'class' NAME ['(' arguments? ')'] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006057 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006058 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006059 return NULL;
6060 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006061 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 +01006062 Token * _keyword;
6063 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006064 expr_ty a;
6065 void *b;
6066 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006067 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006068 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006069 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006070 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006071 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006072 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006073 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006074 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006076 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006077 )
6078 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006079 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 +01006080 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6081 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006082 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006083 return NULL;
6084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006085 int _end_lineno = _token->end_lineno;
6086 UNUSED(_end_lineno); // Only used by EXTRA macro
6087 int _end_col_offset = _token->end_col_offset;
6088 UNUSED(_end_col_offset); // Only used by EXTRA macro
6089 _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 );
6090 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006091 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006092 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006093 return NULL;
6094 }
6095 goto done;
6096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006097 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006098 D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
6099 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006101 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006102 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006103 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006104 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006105}
6106
6107// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
6108static asdl_seq*
6109block_rule(Parser *p)
6110{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006111 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006112 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006113 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006114 return NULL;
6115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006116 asdl_seq* _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006117 if (_PyPegen_is_memoized(p, block_type, &_res)) {
6118 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006119 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006121 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006122 { // NEWLINE INDENT statements DEDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006123 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006124 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006125 return NULL;
6126 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006127 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 +01006128 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01006129 Token * dedent_var;
6130 Token * indent_var;
6131 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006132 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006133 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006134 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006135 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006136 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006137 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006138 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006139 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006140 )
6141 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006142 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 +01006143 _res = a;
6144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006145 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006146 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006147 return NULL;
6148 }
6149 goto done;
6150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006151 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006152 D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
6153 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006154 }
6155 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006156 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006157 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006158 return NULL;
6159 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006160 D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006161 asdl_seq* simple_stmt_var;
6162 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006163 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006164 )
6165 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006166 D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006167 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006168 goto done;
6169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006170 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006171 D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
6172 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006173 }
6174 { // invalid_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006175 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006176 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006177 return NULL;
6178 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006179 D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006180 void *invalid_block_var;
6181 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006182 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006183 )
6184 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006185 D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006186 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006187 goto done;
6188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006189 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006190 D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
6191 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006193 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006194 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006195 _PyPegen_insert_memo(p, _mark, block_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01006196 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006197 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006198}
6199
6200// expressions_list: ','.star_expression+ ','?
6201static asdl_seq*
6202expressions_list_rule(Parser *p)
6203{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006204 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006205 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006206 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006207 return NULL;
6208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006209 asdl_seq* _res = NULL;
6210 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006211 { // ','.star_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006212 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006213 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006214 return NULL;
6215 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006216 D(fprintf(stderr, "%*c> expressions_list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_expression+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006217 void *_opt_var;
6218 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006219 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006220 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006221 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006222 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006223 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006224 )
6225 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006226 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 +01006227 _res = a;
6228 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006229 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006230 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006231 return NULL;
6232 }
6233 goto done;
6234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006235 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006236 D(fprintf(stderr, "%*c%s expressions_list[%d-%d]: %s failed!\n", p->level, ' ',
6237 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_expression+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006239 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006240 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006241 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006242 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006243}
6244
6245// star_expressions:
6246// | star_expression ((',' star_expression))+ ','?
6247// | star_expression ','
6248// | star_expression
6249static expr_ty
6250star_expressions_rule(Parser *p)
6251{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006252 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006253 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006254 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006255 return NULL;
6256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006257 expr_ty _res = NULL;
6258 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006259 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6260 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006261 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006262 return NULL;
6263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006264 int _start_lineno = p->tokens[_mark]->lineno;
6265 UNUSED(_start_lineno); // Only used by EXTRA macro
6266 int _start_col_offset = p->tokens[_mark]->col_offset;
6267 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006268 { // star_expression ((',' star_expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006269 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006270 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006271 return NULL;
6272 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006273 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 +01006274 void *_opt_var;
6275 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006276 expr_ty a;
6277 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006278 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006279 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006280 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006281 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006282 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006283 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006284 )
6285 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006286 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 +01006287 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6288 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006289 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006290 return NULL;
6291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006292 int _end_lineno = _token->end_lineno;
6293 UNUSED(_end_lineno); // Only used by EXTRA macro
6294 int _end_col_offset = _token->end_col_offset;
6295 UNUSED(_end_col_offset); // Only used by EXTRA macro
6296 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
6297 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006298 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006299 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006300 return NULL;
6301 }
6302 goto done;
6303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006304 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006305 D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
6306 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006307 }
6308 { // star_expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006309 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006310 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006311 return NULL;
6312 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006313 D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006314 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006315 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006316 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006317 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006318 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006319 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006320 )
6321 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006322 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 +01006323 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6324 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006325 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006326 return NULL;
6327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006328 int _end_lineno = _token->end_lineno;
6329 UNUSED(_end_lineno); // Only used by EXTRA macro
6330 int _end_col_offset = _token->end_col_offset;
6331 UNUSED(_end_col_offset); // Only used by EXTRA macro
6332 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
6333 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006334 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006335 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006336 return NULL;
6337 }
6338 goto done;
6339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006340 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006341 D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
6342 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006343 }
6344 { // star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006345 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006346 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006347 return NULL;
6348 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006349 D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006350 expr_ty star_expression_var;
6351 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006352 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006353 )
6354 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006355 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 +01006356 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006357 goto done;
6358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006359 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006360 D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
6361 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006363 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006364 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006365 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006366 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006367}
6368
6369// star_expression: '*' bitwise_or | expression
6370static expr_ty
6371star_expression_rule(Parser *p)
6372{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006373 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006374 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006375 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006376 return NULL;
6377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006378 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006379 if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
6380 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006381 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006383 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006384 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6385 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006386 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006387 return NULL;
6388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006389 int _start_lineno = p->tokens[_mark]->lineno;
6390 UNUSED(_start_lineno); // Only used by EXTRA macro
6391 int _start_col_offset = p->tokens[_mark]->col_offset;
6392 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006393 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006394 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006395 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006396 return NULL;
6397 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006398 D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006399 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006400 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006401 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006402 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006403 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006404 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006405 )
6406 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006407 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 +01006408 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6409 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006410 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006411 return NULL;
6412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006413 int _end_lineno = _token->end_lineno;
6414 UNUSED(_end_lineno); // Only used by EXTRA macro
6415 int _end_col_offset = _token->end_col_offset;
6416 UNUSED(_end_col_offset); // Only used by EXTRA macro
6417 _res = _Py_Starred ( a , Load , EXTRA );
6418 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006419 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006420 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006421 return NULL;
6422 }
6423 goto done;
6424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006425 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006426 D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
6427 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006428 }
6429 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006430 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006431 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006432 return NULL;
6433 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006434 D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006435 expr_ty expression_var;
6436 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006437 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006438 )
6439 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006440 D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006441 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006442 goto done;
6443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006444 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006445 D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
6446 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006448 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006449 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006450 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01006451 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006452 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006453}
6454
6455// star_named_expressions: ','.star_named_expression+ ','?
6456static asdl_seq*
6457star_named_expressions_rule(Parser *p)
6458{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006459 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006460 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006461 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006462 return NULL;
6463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006464 asdl_seq* _res = NULL;
6465 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006466 { // ','.star_named_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006467 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006468 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006469 return NULL;
6470 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006471 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 +01006472 void *_opt_var;
6473 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006474 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006475 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006476 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006477 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006478 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006479 )
6480 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006481 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 +01006482 _res = a;
6483 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006484 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006485 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006486 return NULL;
6487 }
6488 goto done;
6489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006490 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006491 D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
6492 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006494 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006495 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006496 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006497 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006498}
6499
6500// star_named_expression: '*' bitwise_or | named_expression
6501static expr_ty
6502star_named_expression_rule(Parser *p)
6503{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006504 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006505 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006506 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006507 return NULL;
6508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006509 expr_ty _res = NULL;
6510 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006511 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6512 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006513 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006514 return NULL;
6515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006516 int _start_lineno = p->tokens[_mark]->lineno;
6517 UNUSED(_start_lineno); // Only used by EXTRA macro
6518 int _start_col_offset = p->tokens[_mark]->col_offset;
6519 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006520 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006521 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006522 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006523 return NULL;
6524 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006525 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 +01006526 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006527 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006528 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006529 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006531 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006532 )
6533 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006534 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 +01006535 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6536 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006537 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006538 return NULL;
6539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006540 int _end_lineno = _token->end_lineno;
6541 UNUSED(_end_lineno); // Only used by EXTRA macro
6542 int _end_col_offset = _token->end_col_offset;
6543 UNUSED(_end_col_offset); // Only used by EXTRA macro
6544 _res = _Py_Starred ( a , Load , EXTRA );
6545 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006546 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006547 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006548 return NULL;
6549 }
6550 goto done;
6551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006552 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006553 D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6554 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006555 }
6556 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006557 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006558 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006559 return NULL;
6560 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006561 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 +01006562 expr_ty named_expression_var;
6563 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006564 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006565 )
6566 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006567 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 +01006568 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006569 goto done;
6570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006571 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006572 D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6573 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006575 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006576 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006577 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006578 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006579}
6580
6581// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
6582static expr_ty
6583named_expression_rule(Parser *p)
6584{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006585 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006586 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006587 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006588 return NULL;
6589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006590 expr_ty _res = NULL;
6591 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006592 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6593 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006594 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006595 return NULL;
6596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006597 int _start_lineno = p->tokens[_mark]->lineno;
6598 UNUSED(_start_lineno); // Only used by EXTRA macro
6599 int _start_col_offset = p->tokens[_mark]->col_offset;
6600 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006601 { // NAME ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006602 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006603 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006604 return NULL;
6605 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006606 D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006607 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006608 expr_ty a;
6609 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006610 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006611 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006612 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006613 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006614 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006615 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006616 )
6617 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006618 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 +01006619 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6620 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006621 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006622 return NULL;
6623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006624 int _end_lineno = _token->end_lineno;
6625 UNUSED(_end_lineno); // Only used by EXTRA macro
6626 int _end_col_offset = _token->end_col_offset;
6627 UNUSED(_end_col_offset); // Only used by EXTRA macro
6628 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
6629 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006630 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006631 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006632 return NULL;
6633 }
6634 goto done;
6635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006636 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006637 D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6638 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006639 }
6640 { // expression !':='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006641 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006642 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006643 return NULL;
6644 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006645 D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006646 expr_ty expression_var;
6647 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006648 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006649 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006650 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006651 )
6652 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006653 D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006654 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006655 goto done;
6656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006657 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006658 D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6659 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006660 }
6661 { // invalid_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006662 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006663 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006664 return NULL;
6665 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006666 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 +01006667 void *invalid_named_expression_var;
6668 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006669 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006670 )
6671 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006672 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 +01006673 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006674 goto done;
6675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006676 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006677 D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
6678 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006680 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006681 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006682 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006683 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684}
6685
6686// annotated_rhs: yield_expr | star_expressions
6687static expr_ty
6688annotated_rhs_rule(Parser *p)
6689{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006690 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006691 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006692 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006693 return NULL;
6694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006695 expr_ty _res = NULL;
6696 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006697 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006698 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006699 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006700 return NULL;
6701 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006702 D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006703 expr_ty yield_expr_var;
6704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006705 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006706 )
6707 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006708 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 +01006709 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006710 goto done;
6711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006712 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006713 D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
6714 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006715 }
6716 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006717 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006718 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006719 return NULL;
6720 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006721 D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006722 expr_ty star_expressions_var;
6723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006724 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006725 )
6726 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006727 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 +01006728 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006729 goto done;
6730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006731 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006732 D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
6733 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006735 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006736 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006737 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006738 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006739}
6740
6741// expressions: expression ((',' expression))+ ','? | expression ',' | expression
6742static expr_ty
6743expressions_rule(Parser *p)
6744{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006745 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006746 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006747 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006748 return NULL;
6749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006750 expr_ty _res = NULL;
6751 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006752 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6753 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006754 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006755 return NULL;
6756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006757 int _start_lineno = p->tokens[_mark]->lineno;
6758 UNUSED(_start_lineno); // Only used by EXTRA macro
6759 int _start_col_offset = p->tokens[_mark]->col_offset;
6760 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006761 { // expression ((',' expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006762 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006763 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006764 return NULL;
6765 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006766 D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006767 void *_opt_var;
6768 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006769 expr_ty a;
6770 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006771 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006772 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006773 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006774 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006775 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006776 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006777 )
6778 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006779 D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006780 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6781 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006782 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006783 return NULL;
6784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006785 int _end_lineno = _token->end_lineno;
6786 UNUSED(_end_lineno); // Only used by EXTRA macro
6787 int _end_col_offset = _token->end_col_offset;
6788 UNUSED(_end_col_offset); // Only used by EXTRA macro
6789 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
6790 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006791 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006792 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006793 return NULL;
6794 }
6795 goto done;
6796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006797 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006798 D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
6799 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006800 }
6801 { // expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006802 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006803 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006804 return NULL;
6805 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006806 D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006807 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006808 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006809 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006810 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006811 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006812 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006813 )
6814 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006815 D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006816 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6817 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006818 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006819 return NULL;
6820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006821 int _end_lineno = _token->end_lineno;
6822 UNUSED(_end_lineno); // Only used by EXTRA macro
6823 int _end_col_offset = _token->end_col_offset;
6824 UNUSED(_end_col_offset); // Only used by EXTRA macro
6825 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
6826 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006827 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006828 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006829 return NULL;
6830 }
6831 goto done;
6832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006833 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006834 D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
6835 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006836 }
6837 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006838 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006839 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006840 return NULL;
6841 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006842 D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006843 expr_ty expression_var;
6844 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006845 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006846 )
6847 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006848 D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006849 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006850 goto done;
6851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006852 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006853 D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
6854 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006856 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006857 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01006858 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006859 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006860}
6861
6862// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
6863static expr_ty
6864expression_rule(Parser *p)
6865{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006866 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006867 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006868 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006869 return NULL;
6870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006871 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006872 if (_PyPegen_is_memoized(p, expression_type, &_res)) {
6873 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006874 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006876 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006877 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6878 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006879 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006880 return NULL;
6881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006882 int _start_lineno = p->tokens[_mark]->lineno;
6883 UNUSED(_start_lineno); // Only used by EXTRA macro
6884 int _start_col_offset = p->tokens[_mark]->col_offset;
6885 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006886 { // disjunction 'if' disjunction 'else' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006887 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006888 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006889 return NULL;
6890 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006891 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 +01006892 Token * _keyword;
6893 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006894 expr_ty a;
6895 expr_ty b;
6896 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006897 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006898 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006899 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006900 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006902 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006903 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006904 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006905 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006906 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006907 )
6908 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006909 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 +01006910 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6911 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006912 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006913 return NULL;
6914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006915 int _end_lineno = _token->end_lineno;
6916 UNUSED(_end_lineno); // Only used by EXTRA macro
6917 int _end_col_offset = _token->end_col_offset;
6918 UNUSED(_end_col_offset); // Only used by EXTRA macro
6919 _res = _Py_IfExp ( b , a , c , EXTRA );
6920 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006921 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006922 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006923 return NULL;
6924 }
6925 goto done;
6926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006927 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006928 D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
6929 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006930 }
6931 { // disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006932 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006933 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006934 return NULL;
6935 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006936 D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006937 expr_ty disjunction_var;
6938 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006939 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006940 )
6941 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006942 D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006943 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006944 goto done;
6945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006946 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006947 D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
6948 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006949 }
6950 { // lambdef
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006951 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006952 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006953 return NULL;
6954 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01006955 D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006956 expr_ty lambdef_var;
6957 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006958 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006959 )
6960 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006961 D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006962 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006963 goto done;
6964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006965 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006966 D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
6967 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006969 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006970 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006971 _PyPegen_insert_memo(p, _mark, expression_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01006972 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006973 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006974}
6975
Pablo Galindoc6483c92020-06-10 14:07:06 +01006976// lambdef: 'lambda' lambda_params? ':' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006977static expr_ty
6978lambdef_rule(Parser *p)
6979{
Pablo Galindo800a35c62020-05-25 18:38:45 +01006980 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006981 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006982 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006983 return NULL;
6984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006985 expr_ty _res = NULL;
6986 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006987 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6988 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01006989 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006990 return NULL;
6991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006992 int _start_lineno = p->tokens[_mark]->lineno;
6993 UNUSED(_start_lineno); // Only used by EXTRA macro
6994 int _start_col_offset = p->tokens[_mark]->col_offset;
6995 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc6483c92020-06-10 14:07:06 +01006996 { // 'lambda' lambda_params? ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006997 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01006998 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006999 return NULL;
7000 }
Pablo Galindoc6483c92020-06-10 14:07:06 +01007001 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 +01007002 Token * _keyword;
7003 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007004 void *a;
7005 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007006 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007007 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007008 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +01007009 (a = lambda_params_rule(p), 1) // lambda_params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007010 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007011 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007012 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007013 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007014 )
7015 {
Pablo Galindoc6483c92020-06-10 14:07:06 +01007016 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 +01007017 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7018 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007019 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007020 return NULL;
7021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007022 int _end_lineno = _token->end_lineno;
7023 UNUSED(_end_lineno); // Only used by EXTRA macro
7024 int _end_col_offset = _token->end_col_offset;
7025 UNUSED(_end_col_offset); // Only used by EXTRA macro
7026 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
7027 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007028 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007029 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007030 return NULL;
7031 }
7032 goto done;
7033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007034 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007035 D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindoc6483c92020-06-10 14:07:06 +01007036 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
7037 }
7038 _res = NULL;
7039 done:
7040 D(p->level--);
7041 return _res;
7042}
7043
7044// lambda_params: invalid_lambda_parameters | lambda_parameters
7045static arguments_ty
7046lambda_params_rule(Parser *p)
7047{
7048 D(p->level++);
7049 if (p->error_indicator) {
7050 D(p->level--);
7051 return NULL;
7052 }
7053 arguments_ty _res = NULL;
7054 int _mark = p->mark;
7055 { // invalid_lambda_parameters
7056 if (p->error_indicator) {
7057 D(p->level--);
7058 return NULL;
7059 }
7060 D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
7061 void *invalid_lambda_parameters_var;
7062 if (
7063 (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p)) // invalid_lambda_parameters
7064 )
7065 {
7066 D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
7067 _res = invalid_lambda_parameters_var;
7068 goto done;
7069 }
7070 p->mark = _mark;
7071 D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
7072 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
7073 }
7074 { // lambda_parameters
7075 if (p->error_indicator) {
7076 D(p->level--);
7077 return NULL;
7078 }
7079 D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
7080 arguments_ty lambda_parameters_var;
7081 if (
7082 (lambda_parameters_var = lambda_parameters_rule(p)) // lambda_parameters
7083 )
7084 {
7085 D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
7086 _res = lambda_parameters_var;
7087 goto done;
7088 }
7089 p->mark = _mark;
7090 D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
7091 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007093 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007094 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007095 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007096 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007097}
7098
7099// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07007100// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
7101// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
7102// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
7103// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007104// | lambda_star_etc
7105static arguments_ty
7106lambda_parameters_rule(Parser *p)
7107{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007108 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007109 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007110 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007111 return NULL;
7112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007113 arguments_ty _res = NULL;
7114 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007115 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007116 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007117 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007118 return NULL;
7119 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007120 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 +01007121 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007122 asdl_seq * b;
7123 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007124 void *d;
7125 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007126 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007127 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007128 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007129 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007130 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007132 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133 )
7134 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007135 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 +01007136 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
7137 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007138 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007139 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007140 return NULL;
7141 }
7142 goto done;
7143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007144 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007145 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7146 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 +01007147 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007148 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007149 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007150 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007151 return NULL;
7152 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007153 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 +01007154 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007155 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007156 void *c;
7157 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007158 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007159 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007160 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007161 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007162 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007163 )
7164 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007165 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 +01007166 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
7167 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007168 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007169 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007170 return NULL;
7171 }
7172 goto done;
7173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007174 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007175 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7176 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 +01007177 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007178 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007179 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007180 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007181 return NULL;
7182 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007183 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 -07007184 asdl_seq * a;
7185 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007186 void *c;
7187 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007188 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007189 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007190 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007191 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007192 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007193 )
7194 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007195 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 +01007196 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
7197 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007198 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007199 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007200 return NULL;
7201 }
7202 goto done;
7203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007204 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007205 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7206 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 +01007207 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007208 { // lambda_param_with_default+ lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007209 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007210 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007211 return NULL;
7212 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007213 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 -07007214 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007215 void *b;
7216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007217 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007218 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007219 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007220 )
7221 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007222 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 +01007223 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
7224 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007225 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007226 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007227 return NULL;
7228 }
7229 goto done;
7230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007231 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007232 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7233 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007234 }
7235 { // lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007236 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007237 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007238 return NULL;
7239 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007240 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 +01007241 StarEtc* a;
7242 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007243 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007244 )
7245 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007246 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 +01007247 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
7248 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007249 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007250 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007251 return NULL;
7252 }
7253 goto done;
7254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007255 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007256 D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
7257 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007259 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007260 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007261 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007262 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007263}
7264
Guido van Rossum3941d972020-05-01 09:42:03 -07007265// lambda_slash_no_default:
7266// | lambda_param_no_default+ '/' ','
7267// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007268static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07007269lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007270{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007271 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007272 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007273 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007274 return NULL;
7275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007276 asdl_seq* _res = NULL;
7277 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007278 { // lambda_param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007279 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007280 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007281 return NULL;
7282 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007283 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 +01007284 Token * _literal;
7285 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07007286 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007287 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007288 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007289 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007290 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007291 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007292 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007293 )
7294 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007295 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 +01007296 _res = a;
7297 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007298 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007299 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007300 return NULL;
7301 }
7302 goto done;
7303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007304 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007305 D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
7306 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007307 }
7308 { // lambda_param_no_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007309 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007310 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007311 return NULL;
7312 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007313 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 +01007314 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007315 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007316 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007317 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07007318 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007319 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07007320 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007321 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007322 )
7323 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007324 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 +01007325 _res = a;
7326 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007327 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007328 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007329 return NULL;
7330 }
7331 goto done;
7332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007333 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007334 D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
7335 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007337 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007338 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007339 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007340 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007341}
7342
Guido van Rossum3941d972020-05-01 09:42:03 -07007343// lambda_slash_with_default:
7344// | lambda_param_no_default* lambda_param_with_default+ '/' ','
7345// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007346static SlashWithDefault*
7347lambda_slash_with_default_rule(Parser *p)
7348{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007349 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007350 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007351 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007352 return NULL;
7353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007354 SlashWithDefault* _res = NULL;
7355 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007356 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007357 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007358 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007359 return NULL;
7360 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007361 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 +01007362 Token * _literal;
7363 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07007364 asdl_seq * a;
7365 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007366 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007367 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007369 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007370 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007371 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007372 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007373 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007374 )
7375 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007376 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 +01007377 _res = _PyPegen_slash_with_default ( p , a , b );
7378 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007379 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007380 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007381 return NULL;
7382 }
7383 goto done;
7384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007385 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007386 D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
7387 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007388 }
7389 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007390 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007391 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007392 return NULL;
7393 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007394 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 +01007395 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007396 asdl_seq * a;
7397 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07007398 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007399 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07007400 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007401 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07007402 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007403 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07007404 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007405 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007406 )
7407 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007408 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 +01007409 _res = _PyPegen_slash_with_default ( p , a , b );
7410 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007411 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007412 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007413 return NULL;
7414 }
7415 goto done;
7416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007417 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007418 D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
7419 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007421 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007422 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007423 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007424 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007425}
7426
7427// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07007428// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
7429// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
7430// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007431// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007432static StarEtc*
7433lambda_star_etc_rule(Parser *p)
7434{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007435 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007436 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007437 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007438 return NULL;
7439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007440 StarEtc* _res = NULL;
7441 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007442 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007443 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007444 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007445 return NULL;
7446 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007447 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 +01007448 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007449 arg_ty a;
7450 asdl_seq * b;
7451 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007452 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007453 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007454 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007455 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007457 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007458 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007459 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007460 )
7461 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007462 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 +01007463 _res = _PyPegen_star_etc ( p , a , b , c );
7464 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007465 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007466 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007467 return NULL;
7468 }
7469 goto done;
7470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007471 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007472 D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
7473 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007474 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007475 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007476 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007477 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007478 return NULL;
7479 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007480 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 +01007481 Token * _literal;
7482 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007483 asdl_seq * b;
7484 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007485 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007486 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007487 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007488 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007489 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007490 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007491 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007492 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007493 )
7494 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007495 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 +01007496 _res = _PyPegen_star_etc ( p , NULL , b , c );
7497 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007498 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007499 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 return NULL;
7501 }
7502 goto done;
7503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007504 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007505 D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
7506 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007507 }
Guido van Rossum3941d972020-05-01 09:42:03 -07007508 { // lambda_kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007509 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007510 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007511 return NULL;
7512 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007513 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 +01007514 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007515 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007516 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007517 )
7518 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007519 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 +01007520 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
7521 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007522 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007523 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007524 return NULL;
7525 }
7526 goto done;
7527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007528 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007529 D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
7530 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007531 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007532 { // invalid_lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007533 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007534 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007535 return NULL;
7536 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007537 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 +03007538 void *invalid_lambda_star_etc_var;
7539 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007540 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007541 )
7542 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007543 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 +01007544 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007545 goto done;
7546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007547 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007548 D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
7549 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03007550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007551 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007552 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007553 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007554 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007555}
7556
Guido van Rossum3941d972020-05-01 09:42:03 -07007557// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007558static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07007559lambda_kwds_rule(Parser *p)
7560{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007561 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -07007562 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007563 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007564 return NULL;
7565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007566 arg_ty _res = NULL;
7567 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007568 { // '**' lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007569 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007570 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007571 return NULL;
7572 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007573 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 +01007574 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007575 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007576 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007577 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07007578 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007579 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07007580 )
7581 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007582 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 +01007583 _res = a;
7584 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007585 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007586 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007587 return NULL;
7588 }
7589 goto done;
7590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007591 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007592 D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
7593 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007595 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07007596 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007597 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007598 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07007599}
7600
7601// lambda_param_no_default: lambda_param ',' | lambda_param &':'
7602static arg_ty
7603lambda_param_no_default_rule(Parser *p)
7604{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007605 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -07007606 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007607 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007608 return NULL;
7609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007610 arg_ty _res = NULL;
7611 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007612 { // lambda_param ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007613 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007614 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007615 return NULL;
7616 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007617 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 +01007618 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007619 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07007620 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007621 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007622 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007623 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007624 )
7625 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007626 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 +01007627 _res = a;
7628 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007629 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007630 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007631 return NULL;
7632 }
7633 goto done;
7634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007635 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007636 D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
7637 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007638 }
7639 { // lambda_param &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007640 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007641 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007642 return NULL;
7643 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007644 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 -07007645 arg_ty a;
7646 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007647 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007648 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007649 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07007650 )
7651 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007652 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 +01007653 _res = a;
7654 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007655 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007656 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007657 return NULL;
7658 }
7659 goto done;
7660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007661 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007662 D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
7663 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007665 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07007666 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007667 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007668 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07007669}
7670
7671// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
7672static NameDefaultPair*
7673lambda_param_with_default_rule(Parser *p)
7674{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007675 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -07007676 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007677 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007678 return NULL;
7679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007680 NameDefaultPair* _res = NULL;
7681 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007682 { // lambda_param default ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007683 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007684 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007685 return NULL;
7686 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007687 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 +01007688 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007689 arg_ty a;
7690 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07007691 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007692 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007693 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007694 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07007695 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007696 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007697 )
7698 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007699 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 +01007700 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
7701 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007702 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007703 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007704 return NULL;
7705 }
7706 goto done;
7707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007708 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007709 D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
7710 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007711 }
7712 { // lambda_param default &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007713 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007714 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007715 return NULL;
7716 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007717 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 -07007718 arg_ty a;
7719 expr_ty c;
7720 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007721 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007722 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007723 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07007724 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007725 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07007726 )
7727 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007728 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 +01007729 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
7730 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007731 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007732 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007733 return NULL;
7734 }
7735 goto done;
7736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007737 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007738 D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
7739 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007741 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07007742 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007743 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007744 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07007745}
7746
7747// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
7748static NameDefaultPair*
7749lambda_param_maybe_default_rule(Parser *p)
7750{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007751 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -07007752 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007753 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007754 return NULL;
7755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007756 NameDefaultPair* _res = NULL;
7757 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07007758 { // lambda_param default? ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007759 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007760 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007761 return NULL;
7762 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007763 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 +01007764 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07007765 arg_ty a;
7766 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07007767 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007768 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007769 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007770 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07007771 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007772 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07007773 )
7774 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007775 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 +01007776 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
7777 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007778 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007779 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007780 return NULL;
7781 }
7782 goto done;
7783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007784 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007785 D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
7786 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007787 }
7788 { // lambda_param default? &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007789 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007790 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007791 return NULL;
7792 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007793 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 -07007794 arg_ty a;
7795 void *c;
7796 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007797 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07007798 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007799 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07007800 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007801 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07007802 )
7803 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007804 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 +01007805 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
7806 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07007807 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007808 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -07007809 return NULL;
7810 }
7811 goto done;
7812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007813 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007814 D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
7815 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
Guido van Rossum3941d972020-05-01 09:42:03 -07007816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007817 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07007818 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007819 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007820 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07007821}
7822
7823// lambda_param: NAME
7824static arg_ty
7825lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007826{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007827 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007828 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007829 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007830 return NULL;
7831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007832 arg_ty _res = NULL;
7833 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007834 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7835 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007836 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007837 return NULL;
7838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007839 int _start_lineno = p->tokens[_mark]->lineno;
7840 UNUSED(_start_lineno); // Only used by EXTRA macro
7841 int _start_col_offset = p->tokens[_mark]->col_offset;
7842 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007843 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007844 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007845 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007846 return NULL;
7847 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007848 D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007849 expr_ty a;
7850 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007851 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007852 )
7853 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007854 D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007855 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7856 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007857 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007858 return NULL;
7859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007860 int _end_lineno = _token->end_lineno;
7861 UNUSED(_end_lineno); // Only used by EXTRA macro
7862 int _end_col_offset = _token->end_col_offset;
7863 UNUSED(_end_col_offset); // Only used by EXTRA macro
7864 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
7865 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007866 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007867 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007868 return NULL;
7869 }
7870 goto done;
7871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007872 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007873 D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
7874 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007876 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007877 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01007878 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007879 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007880}
7881
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007882// disjunction: conjunction (('or' conjunction))+ | conjunction
7883static expr_ty
7884disjunction_rule(Parser *p)
7885{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007886 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007887 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007888 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007889 return NULL;
7890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007891 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007892 if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
7893 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007894 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007896 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007897 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7898 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007899 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007900 return NULL;
7901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007902 int _start_lineno = p->tokens[_mark]->lineno;
7903 UNUSED(_start_lineno); // Only used by EXTRA macro
7904 int _start_col_offset = p->tokens[_mark]->col_offset;
7905 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007906 { // conjunction (('or' conjunction))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007907 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007908 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007909 return NULL;
7910 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007911 D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007912 expr_ty a;
7913 asdl_seq * b;
7914 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007915 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007916 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007917 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007918 )
7919 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007920 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 +01007921 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7922 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007923 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007924 return NULL;
7925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007926 int _end_lineno = _token->end_lineno;
7927 UNUSED(_end_lineno); // Only used by EXTRA macro
7928 int _end_col_offset = _token->end_col_offset;
7929 UNUSED(_end_col_offset); // Only used by EXTRA macro
7930 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
7931 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007932 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007933 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007934 return NULL;
7935 }
7936 goto done;
7937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007938 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007939 D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
7940 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007941 }
7942 { // conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007943 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007944 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007945 return NULL;
7946 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007947 D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007948 expr_ty conjunction_var;
7949 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007950 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007951 )
7952 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007953 D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007954 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007955 goto done;
7956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007957 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007958 D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
7959 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007961 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007962 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007963 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01007964 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007965 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007966}
7967
7968// conjunction: inversion (('and' inversion))+ | inversion
7969static expr_ty
7970conjunction_rule(Parser *p)
7971{
Pablo Galindo800a35c62020-05-25 18:38:45 +01007972 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007973 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007974 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007975 return NULL;
7976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007977 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007978 if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
7979 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007980 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007982 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007983 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7984 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01007985 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007986 return NULL;
7987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007988 int _start_lineno = p->tokens[_mark]->lineno;
7989 UNUSED(_start_lineno); // Only used by EXTRA macro
7990 int _start_col_offset = p->tokens[_mark]->col_offset;
7991 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007992 { // inversion (('and' inversion))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007993 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01007994 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007995 return NULL;
7996 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01007997 D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007998 expr_ty a;
7999 asdl_seq * b;
8000 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008001 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008003 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008004 )
8005 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008006 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 +01008007 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8008 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008009 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008010 return NULL;
8011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008012 int _end_lineno = _token->end_lineno;
8013 UNUSED(_end_lineno); // Only used by EXTRA macro
8014 int _end_col_offset = _token->end_col_offset;
8015 UNUSED(_end_col_offset); // Only used by EXTRA macro
8016 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
8017 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008018 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008019 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008020 return NULL;
8021 }
8022 goto done;
8023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008024 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008025 D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
8026 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008027 }
8028 { // inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008029 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008030 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008031 return NULL;
8032 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008033 D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008034 expr_ty inversion_var;
8035 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008036 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008037 )
8038 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008039 D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008040 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008041 goto done;
8042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008043 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008044 D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
8045 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008047 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008048 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008049 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01008050 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008051 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008052}
8053
8054// inversion: 'not' inversion | comparison
8055static expr_ty
8056inversion_rule(Parser *p)
8057{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008058 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008059 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008060 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008061 return NULL;
8062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008063 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008064 if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
8065 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008066 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008068 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008069 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8070 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008071 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008072 return NULL;
8073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008074 int _start_lineno = p->tokens[_mark]->lineno;
8075 UNUSED(_start_lineno); // Only used by EXTRA macro
8076 int _start_col_offset = p->tokens[_mark]->col_offset;
8077 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008078 { // 'not' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008079 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008080 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008081 return NULL;
8082 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008083 D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008084 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008085 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008086 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008087 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008088 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008089 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008090 )
8091 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008092 D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008093 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8094 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008095 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008096 return NULL;
8097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008098 int _end_lineno = _token->end_lineno;
8099 UNUSED(_end_lineno); // Only used by EXTRA macro
8100 int _end_col_offset = _token->end_col_offset;
8101 UNUSED(_end_col_offset); // Only used by EXTRA macro
8102 _res = _Py_UnaryOp ( Not , a , EXTRA );
8103 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008104 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008105 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008106 return NULL;
8107 }
8108 goto done;
8109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008110 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008111 D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
8112 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008113 }
8114 { // comparison
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008115 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008116 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008117 return NULL;
8118 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008119 D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008120 expr_ty comparison_var;
8121 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008122 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008123 )
8124 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008125 D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008126 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008127 goto done;
8128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008129 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008130 D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
8131 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008133 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008134 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008135 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01008136 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008137 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008138}
8139
8140// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
8141static expr_ty
8142comparison_rule(Parser *p)
8143{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008144 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008145 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008146 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008147 return NULL;
8148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008149 expr_ty _res = NULL;
8150 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008151 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8152 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008153 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008154 return NULL;
8155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008156 int _start_lineno = p->tokens[_mark]->lineno;
8157 UNUSED(_start_lineno); // Only used by EXTRA macro
8158 int _start_col_offset = p->tokens[_mark]->col_offset;
8159 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008160 { // bitwise_or compare_op_bitwise_or_pair+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008161 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008162 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008163 return NULL;
8164 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008165 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 +01008166 expr_ty a;
8167 asdl_seq * b;
8168 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008169 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008170 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008171 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008172 )
8173 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008174 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 +01008175 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8176 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008177 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008178 return NULL;
8179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008180 int _end_lineno = _token->end_lineno;
8181 UNUSED(_end_lineno); // Only used by EXTRA macro
8182 int _end_col_offset = _token->end_col_offset;
8183 UNUSED(_end_col_offset); // Only used by EXTRA macro
8184 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
8185 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008186 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008187 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008188 return NULL;
8189 }
8190 goto done;
8191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008192 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008193 D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
8194 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008195 }
8196 { // bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008197 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008198 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008199 return NULL;
8200 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008201 D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008202 expr_ty bitwise_or_var;
8203 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008204 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008205 )
8206 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008207 D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008208 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008209 goto done;
8210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008211 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008212 D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
8213 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008215 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008216 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008217 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008218 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008219}
8220
8221// compare_op_bitwise_or_pair:
8222// | eq_bitwise_or
8223// | noteq_bitwise_or
8224// | lte_bitwise_or
8225// | lt_bitwise_or
8226// | gte_bitwise_or
8227// | gt_bitwise_or
8228// | notin_bitwise_or
8229// | in_bitwise_or
8230// | isnot_bitwise_or
8231// | is_bitwise_or
8232static CmpopExprPair*
8233compare_op_bitwise_or_pair_rule(Parser *p)
8234{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008235 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008236 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008237 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008238 return NULL;
8239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008240 CmpopExprPair* _res = NULL;
8241 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008242 { // eq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008243 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008244 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008245 return NULL;
8246 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008247 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 +01008248 CmpopExprPair* eq_bitwise_or_var;
8249 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008250 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008251 )
8252 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008253 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 +01008254 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008255 goto done;
8256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008257 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008258 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8259 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008260 }
8261 { // noteq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008262 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008263 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008264 return NULL;
8265 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008266 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 +01008267 CmpopExprPair* noteq_bitwise_or_var;
8268 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008269 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008270 )
8271 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008272 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 +01008273 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008274 goto done;
8275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008276 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008277 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8278 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008279 }
8280 { // lte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008281 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008282 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008283 return NULL;
8284 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008285 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 +01008286 CmpopExprPair* lte_bitwise_or_var;
8287 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008288 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008289 )
8290 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008291 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 +01008292 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008293 goto done;
8294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008295 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008296 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8297 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008298 }
8299 { // lt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008300 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008301 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008302 return NULL;
8303 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008304 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 +01008305 CmpopExprPair* lt_bitwise_or_var;
8306 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008307 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008308 )
8309 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008310 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 +01008311 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008312 goto done;
8313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008314 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008315 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8316 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008317 }
8318 { // gte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008319 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008320 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008321 return NULL;
8322 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008323 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 +01008324 CmpopExprPair* gte_bitwise_or_var;
8325 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008326 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008327 )
8328 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008329 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 +01008330 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008331 goto done;
8332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008333 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008334 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8335 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008336 }
8337 { // gt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008338 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008339 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008340 return NULL;
8341 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008342 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 +01008343 CmpopExprPair* gt_bitwise_or_var;
8344 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008345 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008346 )
8347 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008348 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 +01008349 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008350 goto done;
8351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008352 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008353 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8354 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008355 }
8356 { // notin_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008357 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008358 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008359 return NULL;
8360 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008361 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 +01008362 CmpopExprPair* notin_bitwise_or_var;
8363 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008364 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008365 )
8366 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008367 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 +01008368 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008369 goto done;
8370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008371 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008372 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8373 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008374 }
8375 { // in_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008376 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008377 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008378 return NULL;
8379 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008380 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 +01008381 CmpopExprPair* in_bitwise_or_var;
8382 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008383 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008384 )
8385 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008386 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 +01008387 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008388 goto done;
8389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008390 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008391 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8392 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008393 }
8394 { // isnot_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008395 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008396 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008397 return NULL;
8398 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008399 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 +01008400 CmpopExprPair* isnot_bitwise_or_var;
8401 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008402 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008403 )
8404 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008405 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 +01008406 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008407 goto done;
8408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008409 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008410 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8411 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008412 }
8413 { // is_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008414 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008415 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008416 return NULL;
8417 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008418 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 +01008419 CmpopExprPair* is_bitwise_or_var;
8420 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008421 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008422 )
8423 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008424 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 +01008425 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008426 goto done;
8427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008428 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008429 D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
8430 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008432 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008433 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008434 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008435 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008436}
8437
8438// eq_bitwise_or: '==' bitwise_or
8439static CmpopExprPair*
8440eq_bitwise_or_rule(Parser *p)
8441{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008442 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008443 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008444 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008445 return NULL;
8446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008447 CmpopExprPair* _res = NULL;
8448 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008449 { // '==' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008450 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008451 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008452 return NULL;
8453 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008454 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 +01008455 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008456 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008457 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008458 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008459 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008460 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008461 )
8462 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008463 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 +01008464 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
8465 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008467 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008468 return NULL;
8469 }
8470 goto done;
8471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008472 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008473 D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8474 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008476 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008477 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008478 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008479 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008480}
8481
Pablo Galindo2b74c832020-04-27 18:02:07 +01008482// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008483static CmpopExprPair*
8484noteq_bitwise_or_rule(Parser *p)
8485{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008486 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008487 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008488 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008489 return NULL;
8490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008491 CmpopExprPair* _res = NULL;
8492 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008493 { // ('!=') bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008494 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008495 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008496 return NULL;
8497 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008498 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 -07008499 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008500 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008501 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008502 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008503 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008504 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008505 )
8506 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008507 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 +01008508 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
8509 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008510 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008511 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008512 return NULL;
8513 }
8514 goto done;
8515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008516 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008517 D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8518 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008520 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008521 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008522 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008523 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008524}
8525
8526// lte_bitwise_or: '<=' bitwise_or
8527static CmpopExprPair*
8528lte_bitwise_or_rule(Parser *p)
8529{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008530 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008531 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008532 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008533 return NULL;
8534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008535 CmpopExprPair* _res = NULL;
8536 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008537 { // '<=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008538 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008539 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008540 return NULL;
8541 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008542 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 +01008543 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008544 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008545 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008546 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008548 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008549 )
8550 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008551 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 +01008552 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
8553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008554 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008555 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008556 return NULL;
8557 }
8558 goto done;
8559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008560 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008561 D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8562 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008564 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008565 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008566 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008567 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008568}
8569
8570// lt_bitwise_or: '<' bitwise_or
8571static CmpopExprPair*
8572lt_bitwise_or_rule(Parser *p)
8573{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008574 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008575 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008576 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008577 return NULL;
8578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008579 CmpopExprPair* _res = NULL;
8580 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008581 { // '<' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008582 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008583 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008584 return NULL;
8585 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008586 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 +01008587 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008588 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008589 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008590 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008591 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008592 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008593 )
8594 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008595 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 +01008596 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
8597 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008598 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008599 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008600 return NULL;
8601 }
8602 goto done;
8603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008604 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008605 D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8606 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008608 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008609 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008610 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008611 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008612}
8613
8614// gte_bitwise_or: '>=' bitwise_or
8615static CmpopExprPair*
8616gte_bitwise_or_rule(Parser *p)
8617{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008618 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008619 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008620 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008621 return NULL;
8622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008623 CmpopExprPair* _res = NULL;
8624 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008625 { // '>=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008626 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008627 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008628 return NULL;
8629 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008630 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 +01008631 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008632 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008633 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008634 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008636 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 )
8638 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008639 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 +01008640 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
8641 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008642 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008643 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008644 return NULL;
8645 }
8646 goto done;
8647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008648 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008649 D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8650 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008652 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008653 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008654 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008655 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008656}
8657
8658// gt_bitwise_or: '>' bitwise_or
8659static CmpopExprPair*
8660gt_bitwise_or_rule(Parser *p)
8661{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008662 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008663 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008664 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008665 return NULL;
8666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008667 CmpopExprPair* _res = NULL;
8668 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008669 { // '>' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008670 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008671 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008672 return NULL;
8673 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008674 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 +01008675 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008676 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008677 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008678 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008680 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008681 )
8682 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008683 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 +01008684 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
8685 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008686 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008687 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008688 return NULL;
8689 }
8690 goto done;
8691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008692 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008693 D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8694 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008696 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008697 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008698 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008699 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008700}
8701
8702// notin_bitwise_or: 'not' 'in' bitwise_or
8703static CmpopExprPair*
8704notin_bitwise_or_rule(Parser *p)
8705{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008706 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008707 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008708 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008709 return NULL;
8710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008711 CmpopExprPair* _res = NULL;
8712 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008713 { // 'not' 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008714 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008715 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008716 return NULL;
8717 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008718 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 +01008719 Token * _keyword;
8720 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008721 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008722 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008723 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008724 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008725 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008726 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008727 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008728 )
8729 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008730 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 +01008731 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
8732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008733 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008734 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008735 return NULL;
8736 }
8737 goto done;
8738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008739 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008740 D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8741 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008743 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008744 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008745 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008746 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008747}
8748
8749// in_bitwise_or: 'in' bitwise_or
8750static CmpopExprPair*
8751in_bitwise_or_rule(Parser *p)
8752{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008753 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008754 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008755 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008756 return NULL;
8757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008758 CmpopExprPair* _res = NULL;
8759 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008760 { // 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008761 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008762 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008763 return NULL;
8764 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008765 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 +01008766 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008767 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008768 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008769 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008770 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008771 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008772 )
8773 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008774 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 +01008775 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
8776 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008777 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008778 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008779 return NULL;
8780 }
8781 goto done;
8782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008783 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008784 D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8785 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008787 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008788 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008789 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008790 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008791}
8792
8793// isnot_bitwise_or: 'is' 'not' bitwise_or
8794static CmpopExprPair*
8795isnot_bitwise_or_rule(Parser *p)
8796{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008797 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008798 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008799 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008800 return NULL;
8801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008802 CmpopExprPair* _res = NULL;
8803 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008804 { // 'is' 'not' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008805 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008806 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008807 return NULL;
8808 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008809 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 +01008810 Token * _keyword;
8811 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008812 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008813 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008814 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008815 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008816 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008817 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008818 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008819 )
8820 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008821 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 +01008822 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
8823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008824 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008825 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008826 return NULL;
8827 }
8828 goto done;
8829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008830 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008831 D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8832 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008835 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008836 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008837 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008838}
8839
8840// is_bitwise_or: 'is' bitwise_or
8841static CmpopExprPair*
8842is_bitwise_or_rule(Parser *p)
8843{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008844 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008845 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008846 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008847 return NULL;
8848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008849 CmpopExprPair* _res = NULL;
8850 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008851 { // 'is' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008852 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008853 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008854 return NULL;
8855 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008856 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 +01008857 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008858 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008859 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008860 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008862 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008863 )
8864 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008865 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 +01008866 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
8867 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008868 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008869 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008870 return NULL;
8871 }
8872 goto done;
8873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008874 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008875 D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8876 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008878 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008879 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008880 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008881 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008882}
8883
8884// Left-recursive
8885// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
8886static expr_ty bitwise_or_raw(Parser *);
8887static expr_ty
8888bitwise_or_rule(Parser *p)
8889{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008890 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008891 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008892 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
8893 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008894 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008896 int _mark = p->mark;
8897 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008898 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008899 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008900 if (tmpvar_1) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008901 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008902 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008904 p->mark = _mark;
8905 void *_raw = bitwise_or_raw(p);
8906 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008907 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008908 _resmark = p->mark;
8909 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008911 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008912 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008913 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008914}
8915static expr_ty
8916bitwise_or_raw(Parser *p)
8917{
Pablo Galindo800a35c62020-05-25 18:38:45 +01008918 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008919 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008920 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008921 return NULL;
8922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008923 expr_ty _res = NULL;
8924 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008925 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8926 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008927 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008928 return NULL;
8929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008930 int _start_lineno = p->tokens[_mark]->lineno;
8931 UNUSED(_start_lineno); // Only used by EXTRA macro
8932 int _start_col_offset = p->tokens[_mark]->col_offset;
8933 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008934 { // bitwise_or '|' bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008935 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008936 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008937 return NULL;
8938 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008939 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 +01008940 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008941 expr_ty a;
8942 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008943 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008944 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008945 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008946 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008947 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008948 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008949 )
8950 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008951 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 +01008952 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8953 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008954 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008955 return NULL;
8956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008957 int _end_lineno = _token->end_lineno;
8958 UNUSED(_end_lineno); // Only used by EXTRA macro
8959 int _end_col_offset = _token->end_col_offset;
8960 UNUSED(_end_col_offset); // Only used by EXTRA macro
8961 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
8962 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008963 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008964 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008965 return NULL;
8966 }
8967 goto done;
8968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008969 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008970 D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8971 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008972 }
8973 { // bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008974 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008975 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008976 return NULL;
8977 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01008978 D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008979 expr_ty bitwise_xor_var;
8980 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008981 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008982 )
8983 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01008984 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 +01008985 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008986 goto done;
8987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008988 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01008989 D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
8990 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008992 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008993 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01008994 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008995 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008996}
8997
8998// Left-recursive
8999// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
9000static expr_ty bitwise_xor_raw(Parser *);
9001static expr_ty
9002bitwise_xor_rule(Parser *p)
9003{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009004 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009005 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009006 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
9007 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009008 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009010 int _mark = p->mark;
9011 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009012 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009013 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009014 if (tmpvar_2) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009015 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009016 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009018 p->mark = _mark;
9019 void *_raw = bitwise_xor_raw(p);
9020 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009021 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009022 _resmark = p->mark;
9023 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009025 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009026 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009027 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009028}
9029static expr_ty
9030bitwise_xor_raw(Parser *p)
9031{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009032 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009033 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009034 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009035 return NULL;
9036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009037 expr_ty _res = NULL;
9038 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009039 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9040 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009041 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009042 return NULL;
9043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009044 int _start_lineno = p->tokens[_mark]->lineno;
9045 UNUSED(_start_lineno); // Only used by EXTRA macro
9046 int _start_col_offset = p->tokens[_mark]->col_offset;
9047 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009048 { // bitwise_xor '^' bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009049 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009050 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009051 return NULL;
9052 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009053 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 +01009054 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009055 expr_ty a;
9056 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009057 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009058 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009059 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009060 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009061 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009062 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009063 )
9064 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009065 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 +01009066 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9067 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009068 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009069 return NULL;
9070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009071 int _end_lineno = _token->end_lineno;
9072 UNUSED(_end_lineno); // Only used by EXTRA macro
9073 int _end_col_offset = _token->end_col_offset;
9074 UNUSED(_end_col_offset); // Only used by EXTRA macro
9075 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
9076 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009077 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009078 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009079 return NULL;
9080 }
9081 goto done;
9082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009083 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009084 D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
9085 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009086 }
9087 { // bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009088 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009089 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009090 return NULL;
9091 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009092 D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009093 expr_ty bitwise_and_var;
9094 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009095 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009096 )
9097 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009098 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 +01009099 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009100 goto done;
9101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009102 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009103 D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
9104 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009106 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009107 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009108 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009109 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009110}
9111
9112// Left-recursive
9113// bitwise_and: bitwise_and '&' shift_expr | shift_expr
9114static expr_ty bitwise_and_raw(Parser *);
9115static expr_ty
9116bitwise_and_rule(Parser *p)
9117{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009118 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009119 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009120 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
9121 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009122 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009124 int _mark = p->mark;
9125 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009126 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009127 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009128 if (tmpvar_3) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009129 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009130 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009132 p->mark = _mark;
9133 void *_raw = bitwise_and_raw(p);
9134 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009135 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009136 _resmark = p->mark;
9137 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009139 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009140 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009141 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009142}
9143static expr_ty
9144bitwise_and_raw(Parser *p)
9145{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009146 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009147 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009148 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009149 return NULL;
9150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009151 expr_ty _res = NULL;
9152 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009153 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9154 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009155 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009156 return NULL;
9157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009158 int _start_lineno = p->tokens[_mark]->lineno;
9159 UNUSED(_start_lineno); // Only used by EXTRA macro
9160 int _start_col_offset = p->tokens[_mark]->col_offset;
9161 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009162 { // bitwise_and '&' shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009163 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009164 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009165 return NULL;
9166 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009167 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 +01009168 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009169 expr_ty a;
9170 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009171 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009172 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009173 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009174 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009175 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009176 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009177 )
9178 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009179 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 +01009180 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9181 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009182 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009183 return NULL;
9184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009185 int _end_lineno = _token->end_lineno;
9186 UNUSED(_end_lineno); // Only used by EXTRA macro
9187 int _end_col_offset = _token->end_col_offset;
9188 UNUSED(_end_col_offset); // Only used by EXTRA macro
9189 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
9190 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009191 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009192 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009193 return NULL;
9194 }
9195 goto done;
9196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009197 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009198 D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
9199 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009200 }
9201 { // shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009202 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009203 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009204 return NULL;
9205 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009206 D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009207 expr_ty shift_expr_var;
9208 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009209 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009210 )
9211 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009212 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 +01009213 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009214 goto done;
9215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009216 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009217 D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
9218 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009220 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009221 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009222 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009223 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009224}
9225
9226// Left-recursive
9227// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
9228static expr_ty shift_expr_raw(Parser *);
9229static expr_ty
9230shift_expr_rule(Parser *p)
9231{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009232 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009233 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009234 if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
9235 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009236 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009238 int _mark = p->mark;
9239 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009240 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009241 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009242 if (tmpvar_4) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009243 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009244 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009246 p->mark = _mark;
9247 void *_raw = shift_expr_raw(p);
9248 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009249 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009250 _resmark = p->mark;
9251 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009253 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009254 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009256}
9257static expr_ty
9258shift_expr_raw(Parser *p)
9259{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009260 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009261 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009262 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009263 return NULL;
9264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009265 expr_ty _res = NULL;
9266 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009267 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9268 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009269 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009270 return NULL;
9271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009272 int _start_lineno = p->tokens[_mark]->lineno;
9273 UNUSED(_start_lineno); // Only used by EXTRA macro
9274 int _start_col_offset = p->tokens[_mark]->col_offset;
9275 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009276 { // shift_expr '<<' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009277 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009278 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009279 return NULL;
9280 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009281 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 +01009282 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009283 expr_ty a;
9284 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009285 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009286 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009287 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009288 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009289 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009290 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009291 )
9292 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009293 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 +01009294 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9295 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009296 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009297 return NULL;
9298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009299 int _end_lineno = _token->end_lineno;
9300 UNUSED(_end_lineno); // Only used by EXTRA macro
9301 int _end_col_offset = _token->end_col_offset;
9302 UNUSED(_end_col_offset); // Only used by EXTRA macro
9303 _res = _Py_BinOp ( a , LShift , b , EXTRA );
9304 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009305 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009306 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009307 return NULL;
9308 }
9309 goto done;
9310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009311 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009312 D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
9313 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009314 }
9315 { // shift_expr '>>' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009316 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009317 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009318 return NULL;
9319 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009320 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 +01009321 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009322 expr_ty a;
9323 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009324 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009325 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009326 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009327 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009329 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009330 )
9331 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009332 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 +01009333 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9334 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009335 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009336 return NULL;
9337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009338 int _end_lineno = _token->end_lineno;
9339 UNUSED(_end_lineno); // Only used by EXTRA macro
9340 int _end_col_offset = _token->end_col_offset;
9341 UNUSED(_end_col_offset); // Only used by EXTRA macro
9342 _res = _Py_BinOp ( a , RShift , b , EXTRA );
9343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009344 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009345 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009346 return NULL;
9347 }
9348 goto done;
9349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009350 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009351 D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
9352 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009353 }
9354 { // sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009355 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009356 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009357 return NULL;
9358 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009359 D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009360 expr_ty sum_var;
9361 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009362 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009363 )
9364 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009365 D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009366 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009367 goto done;
9368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009369 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009370 D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
9371 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009373 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009374 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009375 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009376 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009377}
9378
9379// Left-recursive
9380// sum: sum '+' term | sum '-' term | term
9381static expr_ty sum_raw(Parser *);
9382static expr_ty
9383sum_rule(Parser *p)
9384{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009385 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009386 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009387 if (_PyPegen_is_memoized(p, sum_type, &_res)) {
9388 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009389 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009391 int _mark = p->mark;
9392 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009393 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009394 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009395 if (tmpvar_5) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009396 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009397 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009399 p->mark = _mark;
9400 void *_raw = sum_raw(p);
9401 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009402 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009403 _resmark = p->mark;
9404 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009406 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009407 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009408 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009409}
9410static expr_ty
9411sum_raw(Parser *p)
9412{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009413 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009414 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009415 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009416 return NULL;
9417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009418 expr_ty _res = NULL;
9419 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009420 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9421 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009422 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009423 return NULL;
9424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009425 int _start_lineno = p->tokens[_mark]->lineno;
9426 UNUSED(_start_lineno); // Only used by EXTRA macro
9427 int _start_col_offset = p->tokens[_mark]->col_offset;
9428 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009429 { // sum '+' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009430 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009431 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009432 return NULL;
9433 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009434 D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009435 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009436 expr_ty a;
9437 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009438 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009439 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009440 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009441 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009442 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009443 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009444 )
9445 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009446 D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009447 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9448 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009449 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009450 return NULL;
9451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009452 int _end_lineno = _token->end_lineno;
9453 UNUSED(_end_lineno); // Only used by EXTRA macro
9454 int _end_col_offset = _token->end_col_offset;
9455 UNUSED(_end_col_offset); // Only used by EXTRA macro
9456 _res = _Py_BinOp ( a , Add , b , EXTRA );
9457 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009458 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009459 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009460 return NULL;
9461 }
9462 goto done;
9463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009464 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009465 D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
9466 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009467 }
9468 { // sum '-' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009469 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009470 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009471 return NULL;
9472 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009473 D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009474 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009475 expr_ty a;
9476 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009477 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009478 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009479 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009480 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009481 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009482 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009483 )
9484 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009485 D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009486 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9487 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009488 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009489 return NULL;
9490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009491 int _end_lineno = _token->end_lineno;
9492 UNUSED(_end_lineno); // Only used by EXTRA macro
9493 int _end_col_offset = _token->end_col_offset;
9494 UNUSED(_end_col_offset); // Only used by EXTRA macro
9495 _res = _Py_BinOp ( a , Sub , b , EXTRA );
9496 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009497 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009498 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009499 return NULL;
9500 }
9501 goto done;
9502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009503 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009504 D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
9505 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009506 }
9507 { // term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009508 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009509 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009510 return NULL;
9511 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009512 D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009513 expr_ty term_var;
9514 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009515 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009516 )
9517 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009518 D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009519 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009520 goto done;
9521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009522 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009523 D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
9524 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009526 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009527 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009528 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009529 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009530}
9531
9532// Left-recursive
9533// term:
9534// | term '*' factor
9535// | term '/' factor
9536// | term '//' factor
9537// | term '%' factor
9538// | term '@' factor
9539// | factor
9540static expr_ty term_raw(Parser *);
9541static expr_ty
9542term_rule(Parser *p)
9543{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009544 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009545 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009546 if (_PyPegen_is_memoized(p, term_type, &_res)) {
9547 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009548 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009550 int _mark = p->mark;
9551 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009552 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009553 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009554 if (tmpvar_6) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009555 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009556 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009558 p->mark = _mark;
9559 void *_raw = term_raw(p);
9560 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009561 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009562 _resmark = p->mark;
9563 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009565 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009566 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009567 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009568}
9569static expr_ty
9570term_raw(Parser *p)
9571{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009572 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009573 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009574 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009575 return NULL;
9576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009577 expr_ty _res = NULL;
9578 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009579 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9580 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009581 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009582 return NULL;
9583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009584 int _start_lineno = p->tokens[_mark]->lineno;
9585 UNUSED(_start_lineno); // Only used by EXTRA macro
9586 int _start_col_offset = p->tokens[_mark]->col_offset;
9587 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009588 { // term '*' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009589 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009590 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009591 return NULL;
9592 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009593 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009594 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009595 expr_ty a;
9596 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009597 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009598 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009599 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009600 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009601 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009602 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009603 )
9604 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009605 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009606 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9607 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009608 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009609 return NULL;
9610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009611 int _end_lineno = _token->end_lineno;
9612 UNUSED(_end_lineno); // Only used by EXTRA macro
9613 int _end_col_offset = _token->end_col_offset;
9614 UNUSED(_end_col_offset); // Only used by EXTRA macro
9615 _res = _Py_BinOp ( a , Mult , b , EXTRA );
9616 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009617 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009618 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009619 return NULL;
9620 }
9621 goto done;
9622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009623 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009624 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9625 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009626 }
9627 { // term '/' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009628 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009629 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009630 return NULL;
9631 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009632 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009633 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009634 expr_ty a;
9635 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009636 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009637 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009638 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009639 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009640 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009641 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009642 )
9643 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009644 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009645 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9646 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009647 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009648 return NULL;
9649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009650 int _end_lineno = _token->end_lineno;
9651 UNUSED(_end_lineno); // Only used by EXTRA macro
9652 int _end_col_offset = _token->end_col_offset;
9653 UNUSED(_end_col_offset); // Only used by EXTRA macro
9654 _res = _Py_BinOp ( a , Div , b , EXTRA );
9655 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009656 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009657 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009658 return NULL;
9659 }
9660 goto done;
9661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009662 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009663 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9664 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009665 }
9666 { // term '//' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009667 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009668 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009669 return NULL;
9670 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009671 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009672 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009673 expr_ty a;
9674 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009675 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009676 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009677 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009678 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009680 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009681 )
9682 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009683 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009684 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9685 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009686 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009687 return NULL;
9688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009689 int _end_lineno = _token->end_lineno;
9690 UNUSED(_end_lineno); // Only used by EXTRA macro
9691 int _end_col_offset = _token->end_col_offset;
9692 UNUSED(_end_col_offset); // Only used by EXTRA macro
9693 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
9694 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009695 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009696 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009697 return NULL;
9698 }
9699 goto done;
9700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009701 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009702 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9703 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009704 }
9705 { // term '%' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009706 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009707 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009708 return NULL;
9709 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009710 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009711 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009712 expr_ty a;
9713 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009714 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009715 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009716 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009717 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009718 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009719 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009720 )
9721 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009722 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009723 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9724 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009725 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009726 return NULL;
9727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009728 int _end_lineno = _token->end_lineno;
9729 UNUSED(_end_lineno); // Only used by EXTRA macro
9730 int _end_col_offset = _token->end_col_offset;
9731 UNUSED(_end_col_offset); // Only used by EXTRA macro
9732 _res = _Py_BinOp ( a , Mod , b , EXTRA );
9733 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009734 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009735 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009736 return NULL;
9737 }
9738 goto done;
9739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009740 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009741 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9742 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009743 }
9744 { // term '@' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009745 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009746 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009747 return NULL;
9748 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009749 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009750 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009751 expr_ty a;
9752 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009753 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009754 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009755 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009756 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009757 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009758 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009759 )
9760 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009761 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009762 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9763 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009764 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009765 return NULL;
9766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009767 int _end_lineno = _token->end_lineno;
9768 UNUSED(_end_lineno); // Only used by EXTRA macro
9769 int _end_col_offset = _token->end_col_offset;
9770 UNUSED(_end_col_offset); // Only used by EXTRA macro
9771 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
9772 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009773 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009774 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009775 return NULL;
9776 }
9777 goto done;
9778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009779 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009780 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9781 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009782 }
9783 { // factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009784 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009785 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009786 return NULL;
9787 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009788 D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009789 expr_ty factor_var;
9790 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009791 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009792 )
9793 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009794 D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009795 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009796 goto done;
9797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009798 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009799 D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
9800 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009802 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009803 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +01009804 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009805 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009806}
9807
9808// factor: '+' factor | '-' factor | '~' factor | power
9809static expr_ty
9810factor_rule(Parser *p)
9811{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009812 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009813 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009814 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009815 return NULL;
9816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009817 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009818 if (_PyPegen_is_memoized(p, factor_type, &_res)) {
9819 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009820 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009822 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009823 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9824 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009825 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009826 return NULL;
9827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009828 int _start_lineno = p->tokens[_mark]->lineno;
9829 UNUSED(_start_lineno); // Only used by EXTRA macro
9830 int _start_col_offset = p->tokens[_mark]->col_offset;
9831 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009832 { // '+' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009833 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009834 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009835 return NULL;
9836 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009837 D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009838 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009839 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009840 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009841 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009842 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009843 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009844 )
9845 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009846 D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009847 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9848 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009849 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009850 return NULL;
9851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009852 int _end_lineno = _token->end_lineno;
9853 UNUSED(_end_lineno); // Only used by EXTRA macro
9854 int _end_col_offset = _token->end_col_offset;
9855 UNUSED(_end_col_offset); // Only used by EXTRA macro
9856 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
9857 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009858 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009859 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009860 return NULL;
9861 }
9862 goto done;
9863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009864 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009865 D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
9866 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009867 }
9868 { // '-' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009869 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009870 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009871 return NULL;
9872 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009873 D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009874 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009875 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009876 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009877 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009878 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009879 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009880 )
9881 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009882 D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009883 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9884 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009885 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009886 return NULL;
9887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009888 int _end_lineno = _token->end_lineno;
9889 UNUSED(_end_lineno); // Only used by EXTRA macro
9890 int _end_col_offset = _token->end_col_offset;
9891 UNUSED(_end_col_offset); // Only used by EXTRA macro
9892 _res = _Py_UnaryOp ( USub , a , EXTRA );
9893 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009894 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009895 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009896 return NULL;
9897 }
9898 goto done;
9899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009900 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009901 D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
9902 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009903 }
9904 { // '~' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009905 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009906 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009907 return NULL;
9908 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009909 D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009910 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009911 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009912 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009913 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009914 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009915 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009916 )
9917 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009918 D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009919 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9920 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009921 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009922 return NULL;
9923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009924 int _end_lineno = _token->end_lineno;
9925 UNUSED(_end_lineno); // Only used by EXTRA macro
9926 int _end_col_offset = _token->end_col_offset;
9927 UNUSED(_end_col_offset); // Only used by EXTRA macro
9928 _res = _Py_UnaryOp ( Invert , a , EXTRA );
9929 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009930 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009931 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009932 return NULL;
9933 }
9934 goto done;
9935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009936 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009937 D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
9938 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009939 }
9940 { // power
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009941 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009942 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009943 return NULL;
9944 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009945 D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009946 expr_ty power_var;
9947 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009948 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009949 )
9950 {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009951 D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009952 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009953 goto done;
9954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009955 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009956 D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
9957 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009959 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009960 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009961 _PyPegen_insert_memo(p, _mark, factor_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +01009962 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009963 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009964}
9965
9966// power: await_primary '**' factor | await_primary
9967static expr_ty
9968power_rule(Parser *p)
9969{
Pablo Galindo800a35c62020-05-25 18:38:45 +01009970 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009971 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009972 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009973 return NULL;
9974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009975 expr_ty _res = NULL;
9976 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009977 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9978 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +01009979 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009980 return NULL;
9981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009982 int _start_lineno = p->tokens[_mark]->lineno;
9983 UNUSED(_start_lineno); // Only used by EXTRA macro
9984 int _start_col_offset = p->tokens[_mark]->col_offset;
9985 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009986 { // await_primary '**' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009987 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +01009988 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009989 return NULL;
9990 }
Pablo Galindo800a35c62020-05-25 18:38:45 +01009991 D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009992 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009993 expr_ty a;
9994 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009995 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009996 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009997 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009998 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009999 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010000 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010001 )
10002 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010003 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 +010010004 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10005 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010006 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010007 return NULL;
10008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010009 int _end_lineno = _token->end_lineno;
10010 UNUSED(_end_lineno); // Only used by EXTRA macro
10011 int _end_col_offset = _token->end_col_offset;
10012 UNUSED(_end_col_offset); // Only used by EXTRA macro
10013 _res = _Py_BinOp ( a , Pow , b , EXTRA );
10014 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010015 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010016 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010017 return NULL;
10018 }
10019 goto done;
10020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010021 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010022 D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
10023 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010024 }
10025 { // await_primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010026 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010027 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010028 return NULL;
10029 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010030 D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010031 expr_ty await_primary_var;
10032 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010033 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010034 )
10035 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010036 D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010037 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010038 goto done;
10039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010040 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010041 D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
10042 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010044 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010045 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010046 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010047 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010048}
10049
10050// await_primary: AWAIT primary | primary
10051static expr_ty
10052await_primary_rule(Parser *p)
10053{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010054 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010055 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010056 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010057 return NULL;
10058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010059 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010060 if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
10061 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010062 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010064 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010065 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10066 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010067 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010068 return NULL;
10069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010070 int _start_lineno = p->tokens[_mark]->lineno;
10071 UNUSED(_start_lineno); // Only used by EXTRA macro
10072 int _start_col_offset = p->tokens[_mark]->col_offset;
10073 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010074 { // AWAIT primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010075 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010076 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010077 return NULL;
10078 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010079 D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010080 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +010010081 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010082 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010083 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010084 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010085 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010086 )
10087 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010088 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 +010010089 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10090 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010091 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010092 return NULL;
10093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010094 int _end_lineno = _token->end_lineno;
10095 UNUSED(_end_lineno); // Only used by EXTRA macro
10096 int _end_col_offset = _token->end_col_offset;
10097 UNUSED(_end_col_offset); // Only used by EXTRA macro
10098 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
10099 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010100 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010101 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010102 return NULL;
10103 }
10104 goto done;
10105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010106 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010107 D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
10108 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "AWAIT primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010109 }
10110 { // primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010111 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010112 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010113 return NULL;
10114 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010115 D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010116 expr_ty primary_var;
10117 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010118 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010119 )
10120 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010121 D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010122 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010123 goto done;
10124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010125 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010126 D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
10127 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010129 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010130 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010131 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010010132 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010133 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010134}
10135
10136// Left-recursive
10137// primary:
10138// | primary '.' NAME
10139// | primary genexp
10140// | primary '(' arguments? ')'
10141// | primary '[' slices ']'
10142// | atom
10143static expr_ty primary_raw(Parser *);
10144static expr_ty
10145primary_rule(Parser *p)
10146{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010147 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010148 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010149 if (_PyPegen_is_memoized(p, primary_type, &_res)) {
10150 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010151 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010153 int _mark = p->mark;
10154 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010155 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010156 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010157 if (tmpvar_7) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010158 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010159 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010161 p->mark = _mark;
10162 void *_raw = primary_raw(p);
10163 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010164 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010165 _resmark = p->mark;
10166 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010168 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010169 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010170 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010171}
10172static expr_ty
10173primary_raw(Parser *p)
10174{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010175 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010176 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010177 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010178 return NULL;
10179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010180 expr_ty _res = NULL;
10181 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010182 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10183 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010184 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010185 return NULL;
10186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010187 int _start_lineno = p->tokens[_mark]->lineno;
10188 UNUSED(_start_lineno); // Only used by EXTRA macro
10189 int _start_col_offset = p->tokens[_mark]->col_offset;
10190 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010191 { // primary '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010192 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010193 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010194 return NULL;
10195 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010196 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010197 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010198 expr_ty a;
10199 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010200 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010201 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010202 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010203 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010204 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010205 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010206 )
10207 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010208 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010209 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10210 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010211 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010212 return NULL;
10213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010214 int _end_lineno = _token->end_lineno;
10215 UNUSED(_end_lineno); // Only used by EXTRA macro
10216 int _end_col_offset = _token->end_col_offset;
10217 UNUSED(_end_col_offset); // Only used by EXTRA macro
10218 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
10219 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010220 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010221 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010222 return NULL;
10223 }
10224 goto done;
10225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010226 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010227 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10228 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010229 }
10230 { // primary genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010231 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010232 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010233 return NULL;
10234 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010235 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010236 expr_ty a;
10237 expr_ty b;
10238 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010239 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010240 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010241 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010242 )
10243 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010244 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010245 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10246 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010247 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010248 return NULL;
10249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010250 int _end_lineno = _token->end_lineno;
10251 UNUSED(_end_lineno); // Only used by EXTRA macro
10252 int _end_col_offset = _token->end_col_offset;
10253 UNUSED(_end_col_offset); // Only used by EXTRA macro
10254 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
10255 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010256 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010257 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010258 return NULL;
10259 }
10260 goto done;
10261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010262 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010263 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10264 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010265 }
10266 { // primary '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010267 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010268 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010269 return NULL;
10270 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010271 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010272 Token * _literal;
10273 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010274 expr_ty a;
10275 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010276 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010277 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010278 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010279 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010280 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010281 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010282 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010283 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010284 )
10285 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010286 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010287 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10288 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010289 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010290 return NULL;
10291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010292 int _end_lineno = _token->end_lineno;
10293 UNUSED(_end_lineno); // Only used by EXTRA macro
10294 int _end_col_offset = _token->end_col_offset;
10295 UNUSED(_end_col_offset); // Only used by EXTRA macro
10296 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
10297 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010298 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010299 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010300 return NULL;
10301 }
10302 goto done;
10303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010304 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010305 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10306 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010307 }
10308 { // primary '[' slices ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010309 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010310 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010311 return NULL;
10312 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010313 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010314 Token * _literal;
10315 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010316 expr_ty a;
10317 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010318 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010319 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010320 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010321 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010322 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010323 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010324 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010325 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010326 )
10327 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010328 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010329 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10330 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010331 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010332 return NULL;
10333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010334 int _end_lineno = _token->end_lineno;
10335 UNUSED(_end_lineno); // Only used by EXTRA macro
10336 int _end_col_offset = _token->end_col_offset;
10337 UNUSED(_end_col_offset); // Only used by EXTRA macro
10338 _res = _Py_Subscript ( a , b , Load , EXTRA );
10339 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010340 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010341 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010342 return NULL;
10343 }
10344 goto done;
10345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010346 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010347 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10348 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010349 }
10350 { // atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010351 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010352 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010353 return NULL;
10354 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010355 D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010356 expr_ty atom_var;
10357 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010358 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010359 )
10360 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010361 D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010362 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010363 goto done;
10364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010365 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010366 D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
10367 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010369 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010370 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010371 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010372 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010373}
10374
10375// slices: slice !',' | ','.slice+ ','?
10376static expr_ty
10377slices_rule(Parser *p)
10378{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010379 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010380 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010381 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010382 return NULL;
10383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010384 expr_ty _res = NULL;
10385 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010386 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10387 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010388 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010389 return NULL;
10390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010391 int _start_lineno = p->tokens[_mark]->lineno;
10392 UNUSED(_start_lineno); // Only used by EXTRA macro
10393 int _start_col_offset = p->tokens[_mark]->col_offset;
10394 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010395 { // slice !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010396 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010397 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010398 return NULL;
10399 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010400 D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010401 expr_ty a;
10402 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010403 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010404 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010405 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010406 )
10407 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010408 D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010409 _res = a;
10410 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010411 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010412 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010413 return NULL;
10414 }
10415 goto done;
10416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010417 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010418 D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
10419 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010420 }
10421 { // ','.slice+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010422 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010423 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010424 return NULL;
10425 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010426 D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010427 void *_opt_var;
10428 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010429 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010430 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010431 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010432 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010433 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010434 )
10435 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010436 D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010437 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10438 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010439 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010440 return NULL;
10441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010442 int _end_lineno = _token->end_lineno;
10443 UNUSED(_end_lineno); // Only used by EXTRA macro
10444 int _end_col_offset = _token->end_col_offset;
10445 UNUSED(_end_col_offset); // Only used by EXTRA macro
10446 _res = _Py_Tuple ( a , Load , EXTRA );
10447 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010448 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010449 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010450 return NULL;
10451 }
10452 goto done;
10453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010454 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010455 D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
10456 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.slice+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010458 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010459 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010460 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010461 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010462}
10463
10464// slice: expression? ':' expression? [':' expression?] | expression
10465static expr_ty
10466slice_rule(Parser *p)
10467{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010468 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010469 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010470 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010471 return NULL;
10472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010473 expr_ty _res = NULL;
10474 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010475 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10476 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010477 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010478 return NULL;
10479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010480 int _start_lineno = p->tokens[_mark]->lineno;
10481 UNUSED(_start_lineno); // Only used by EXTRA macro
10482 int _start_col_offset = p->tokens[_mark]->col_offset;
10483 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010484 { // expression? ':' expression? [':' expression?]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010485 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010486 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010487 return NULL;
10488 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010489 D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010490 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010491 void *a;
10492 void *b;
10493 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010494 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010495 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010496 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010497 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010498 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010499 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010500 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010501 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010502 )
10503 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010504 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 +010010505 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10506 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010507 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010508 return NULL;
10509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010510 int _end_lineno = _token->end_lineno;
10511 UNUSED(_end_lineno); // Only used by EXTRA macro
10512 int _end_col_offset = _token->end_col_offset;
10513 UNUSED(_end_col_offset); // Only used by EXTRA macro
10514 _res = _Py_Slice ( a , b , c , EXTRA );
10515 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010516 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010517 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010518 return NULL;
10519 }
10520 goto done;
10521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010522 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010523 D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
10524 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010525 }
10526 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010527 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010528 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010529 return NULL;
10530 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010531 D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010532 expr_ty a;
10533 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010534 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010535 )
10536 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010537 D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010538 _res = a;
10539 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010540 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010541 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010542 return NULL;
10543 }
10544 goto done;
10545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010546 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010547 D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
10548 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010550 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010551 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010552 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010553 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010554}
10555
10556// atom:
10557// | NAME
10558// | 'True'
10559// | 'False'
10560// | 'None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010561// | &STRING strings
10562// | NUMBER
10563// | &'(' (tuple | group | genexp)
10564// | &'[' (list | listcomp)
10565// | &'{' (dict | set | dictcomp | setcomp)
10566// | '...'
10567static expr_ty
10568atom_rule(Parser *p)
10569{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010570 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010571 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010572 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010573 return NULL;
10574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010575 expr_ty _res = NULL;
10576 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010577 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10578 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010579 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010580 return NULL;
10581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010582 int _start_lineno = p->tokens[_mark]->lineno;
10583 UNUSED(_start_lineno); // Only used by EXTRA macro
10584 int _start_col_offset = p->tokens[_mark]->col_offset;
10585 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010586 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010587 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010588 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010589 return NULL;
10590 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010591 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010592 expr_ty name_var;
10593 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010594 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010595 )
10596 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010597 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010598 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010599 goto done;
10600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010601 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010602 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10603 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010604 }
10605 { // 'True'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010606 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010607 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010608 return NULL;
10609 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010610 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010611 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010612 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010613 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010614 )
10615 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010616 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010617 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10618 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010619 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010620 return NULL;
10621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010622 int _end_lineno = _token->end_lineno;
10623 UNUSED(_end_lineno); // Only used by EXTRA macro
10624 int _end_col_offset = _token->end_col_offset;
10625 UNUSED(_end_col_offset); // Only used by EXTRA macro
10626 _res = _Py_Constant ( Py_True , NULL , EXTRA );
10627 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010628 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010629 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010630 return NULL;
10631 }
10632 goto done;
10633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010634 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010635 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10636 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010637 }
10638 { // 'False'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010639 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010640 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010641 return NULL;
10642 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010643 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010644 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010645 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010646 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010647 )
10648 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010649 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010650 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10651 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010652 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010653 return NULL;
10654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010655 int _end_lineno = _token->end_lineno;
10656 UNUSED(_end_lineno); // Only used by EXTRA macro
10657 int _end_col_offset = _token->end_col_offset;
10658 UNUSED(_end_col_offset); // Only used by EXTRA macro
10659 _res = _Py_Constant ( Py_False , NULL , EXTRA );
10660 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010661 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010662 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010663 return NULL;
10664 }
10665 goto done;
10666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010667 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010668 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10669 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010670 }
10671 { // 'None'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010672 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010673 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010674 return NULL;
10675 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010676 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010677 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010678 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010679 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010680 )
10681 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010682 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010683 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10684 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010685 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010686 return NULL;
10687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010688 int _end_lineno = _token->end_lineno;
10689 UNUSED(_end_lineno); // Only used by EXTRA macro
10690 int _end_col_offset = _token->end_col_offset;
10691 UNUSED(_end_col_offset); // Only used by EXTRA macro
10692 _res = _Py_Constant ( Py_None , NULL , EXTRA );
10693 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010694 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010695 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010696 return NULL;
10697 }
10698 goto done;
10699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010700 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010701 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10702 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010703 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010704 { // &STRING strings
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010705 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010706 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010707 return NULL;
10708 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010709 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010710 expr_ty strings_var;
10711 if (
10712 _PyPegen_lookahead(1, _PyPegen_string_token, p)
10713 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010714 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010715 )
10716 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010717 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010718 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010719 goto done;
10720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010721 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010722 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10723 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&STRING strings"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010724 }
10725 { // NUMBER
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010726 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010727 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010728 return NULL;
10729 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010730 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010731 expr_ty number_var;
10732 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010733 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010734 )
10735 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010736 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010737 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010738 goto done;
10739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010740 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010741 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10742 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010743 }
10744 { // &'(' (tuple | group | genexp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010745 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010746 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010747 return NULL;
10748 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010749 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 -070010750 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010751 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010752 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010753 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010754 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010755 )
10756 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010757 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 +010010758 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010759 goto done;
10760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010761 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010762 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10763 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010764 }
Pablo Galindo2b74c832020-04-27 18:02:07 +010010765 { // &'[' (list | listcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010766 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010767 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010768 return NULL;
10769 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010770 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
Guido van Rossum3941d972020-05-01 09:42:03 -070010771 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010772 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010773 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010774 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010775 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010776 )
10777 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010778 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010779 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010780 goto done;
10781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010782 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010783 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10784 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010785 }
Pablo Galindo2b74c832020-04-27 18:02:07 +010010786 { // &'{' (dict | set | dictcomp | setcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010787 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010788 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010789 return NULL;
10790 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010791 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 -070010792 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010010793 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010794 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +010010795 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010796 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +010010797 )
10798 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010799 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 +010010800 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010010801 goto done;
10802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010803 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010804 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10805 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
Pablo Galindo2b74c832020-04-27 18:02:07 +010010806 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010807 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010808 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010809 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010810 return NULL;
10811 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010812 D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010813 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010814 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010815 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010816 )
10817 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010818 D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010819 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10820 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010821 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010822 return NULL;
10823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010824 int _end_lineno = _token->end_lineno;
10825 UNUSED(_end_lineno); // Only used by EXTRA macro
10826 int _end_col_offset = _token->end_col_offset;
10827 UNUSED(_end_col_offset); // Only used by EXTRA macro
10828 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
10829 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010830 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010831 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010832 return NULL;
10833 }
10834 goto done;
10835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010836 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010837 D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
10838 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010840 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010841 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010842 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010843 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010844}
10845
10846// strings: STRING+
10847static expr_ty
10848strings_rule(Parser *p)
10849{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010850 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010851 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010852 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010853 return NULL;
10854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010855 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010856 if (_PyPegen_is_memoized(p, strings_type, &_res)) {
10857 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010858 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010861 { // STRING+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010862 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010863 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010864 return NULL;
10865 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010866 D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010867 asdl_seq * a;
10868 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010869 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010870 )
10871 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010872 D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING+"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010873 _res = _PyPegen_concatenate_strings ( p , a );
10874 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010875 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010876 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010877 return NULL;
10878 }
10879 goto done;
10880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010881 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010882 D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
10883 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010885 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010886 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010887 _PyPegen_insert_memo(p, _mark, strings_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010010888 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010889 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010890}
10891
10892// list: '[' star_named_expressions? ']'
10893static expr_ty
10894list_rule(Parser *p)
10895{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010896 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010897 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010898 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010899 return NULL;
10900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010901 expr_ty _res = NULL;
10902 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010903 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10904 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010905 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010906 return NULL;
10907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010908 int _start_lineno = p->tokens[_mark]->lineno;
10909 UNUSED(_start_lineno); // Only used by EXTRA macro
10910 int _start_col_offset = p->tokens[_mark]->col_offset;
10911 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010912 { // '[' star_named_expressions? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010913 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010914 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010915 return NULL;
10916 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010917 D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010918 Token * _literal;
10919 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010920 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010921 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010922 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010923 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010924 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010925 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010926 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010927 )
10928 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010929 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 +010010930 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10931 if (_token == NULL) {
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 int _end_lineno = _token->end_lineno;
10936 UNUSED(_end_lineno); // Only used by EXTRA macro
10937 int _end_col_offset = _token->end_col_offset;
10938 UNUSED(_end_col_offset); // Only used by EXTRA macro
10939 _res = _Py_List ( a , Load , EXTRA );
10940 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010941 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010942 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010943 return NULL;
10944 }
10945 goto done;
10946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010947 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010948 D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
10949 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010951 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010952 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010010953 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010954 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010955}
10956
10957// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
10958static expr_ty
10959listcomp_rule(Parser *p)
10960{
Pablo Galindo800a35c62020-05-25 18:38:45 +010010961 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010962 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010963 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010964 return NULL;
10965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010966 expr_ty _res = NULL;
10967 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010968 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10969 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010010970 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010971 return NULL;
10972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010973 int _start_lineno = p->tokens[_mark]->lineno;
10974 UNUSED(_start_lineno); // Only used by EXTRA macro
10975 int _start_col_offset = p->tokens[_mark]->col_offset;
10976 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010977 { // '[' named_expression for_if_clauses ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010978 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010979 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010980 return NULL;
10981 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010010982 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 +010010983 Token * _literal;
10984 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010985 expr_ty a;
10986 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010987 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010988 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010989 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010990 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010991 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010992 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010993 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010994 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010995 )
10996 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010010997 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 +010010998 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10999 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011000 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011001 return NULL;
11002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011003 int _end_lineno = _token->end_lineno;
11004 UNUSED(_end_lineno); // Only used by EXTRA macro
11005 int _end_col_offset = _token->end_col_offset;
11006 UNUSED(_end_col_offset); // Only used by EXTRA macro
11007 _res = _Py_ListComp ( a , b , EXTRA );
11008 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011009 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011010 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011011 return NULL;
11012 }
11013 goto done;
11014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011015 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011016 D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
11017 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011018 }
11019 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011020 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011021 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011022 return NULL;
11023 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011024 D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011025 void *invalid_comprehension_var;
11026 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011027 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011028 )
11029 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011030 D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011031 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011032 goto done;
11033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011034 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011035 D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
11036 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011038 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011039 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011040 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011041 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011042}
11043
11044// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
11045static expr_ty
11046tuple_rule(Parser *p)
11047{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011048 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011049 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011050 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011051 return NULL;
11052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011053 expr_ty _res = NULL;
11054 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011055 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11056 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011057 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011058 return NULL;
11059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011060 int _start_lineno = p->tokens[_mark]->lineno;
11061 UNUSED(_start_lineno); // Only used by EXTRA macro
11062 int _start_col_offset = p->tokens[_mark]->col_offset;
11063 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011064 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011065 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011066 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011067 return NULL;
11068 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011069 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 +010011070 Token * _literal;
11071 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011072 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011073 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011074 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011076 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011077 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011078 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011079 )
11080 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011081 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 +010011082 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11083 if (_token == NULL) {
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 int _end_lineno = _token->end_lineno;
11088 UNUSED(_end_lineno); // Only used by EXTRA macro
11089 int _end_col_offset = _token->end_col_offset;
11090 UNUSED(_end_col_offset); // Only used by EXTRA macro
11091 _res = _Py_Tuple ( a , Load , EXTRA );
11092 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011093 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011094 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011095 return NULL;
11096 }
11097 goto done;
11098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011099 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011100 D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
11101 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011103 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011104 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011105 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011106 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011107}
11108
11109// group: '(' (yield_expr | named_expression) ')'
11110static expr_ty
11111group_rule(Parser *p)
11112{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011113 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011114 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011115 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011116 return NULL;
11117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011118 expr_ty _res = NULL;
11119 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011120 { // '(' (yield_expr | named_expression) ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011121 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011122 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011123 return NULL;
11124 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011125 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 +010011126 Token * _literal;
11127 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011128 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011129 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011130 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011132 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011133 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011134 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011135 )
11136 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011137 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 +010011138 _res = a;
11139 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011140 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011141 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011142 return NULL;
11143 }
11144 goto done;
11145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011146 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011147 D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
11148 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011150 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011151 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011152 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011153 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011154}
11155
11156// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
11157static expr_ty
11158genexp_rule(Parser *p)
11159{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011160 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011161 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011162 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011163 return NULL;
11164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011165 expr_ty _res = NULL;
11166 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011167 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11168 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011169 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011170 return NULL;
11171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011172 int _start_lineno = p->tokens[_mark]->lineno;
11173 UNUSED(_start_lineno); // Only used by EXTRA macro
11174 int _start_col_offset = p->tokens[_mark]->col_offset;
11175 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011176 { // '(' expression for_if_clauses ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011177 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011178 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011179 return NULL;
11180 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011181 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 +010011182 Token * _literal;
11183 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011184 expr_ty a;
11185 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011186 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011187 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011188 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011189 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011190 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011191 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011192 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011193 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011194 )
11195 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011196 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 +010011197 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11198 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011199 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011200 return NULL;
11201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011202 int _end_lineno = _token->end_lineno;
11203 UNUSED(_end_lineno); // Only used by EXTRA macro
11204 int _end_col_offset = _token->end_col_offset;
11205 UNUSED(_end_col_offset); // Only used by EXTRA macro
11206 _res = _Py_GeneratorExp ( a , b , EXTRA );
11207 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011208 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011209 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011210 return NULL;
11211 }
11212 goto done;
11213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011214 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011215 D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
11216 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' expression for_if_clauses ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011217 }
11218 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011219 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011220 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011221 return NULL;
11222 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011223 D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011224 void *invalid_comprehension_var;
11225 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011226 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011227 )
11228 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011229 D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011230 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011231 goto done;
11232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011233 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011234 D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
11235 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011237 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011238 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011239 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011240 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011241}
11242
11243// set: '{' expressions_list '}'
11244static expr_ty
11245set_rule(Parser *p)
11246{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011247 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011248 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011249 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011250 return NULL;
11251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011252 expr_ty _res = NULL;
11253 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011254 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11255 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011256 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011257 return NULL;
11258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011259 int _start_lineno = p->tokens[_mark]->lineno;
11260 UNUSED(_start_lineno); // Only used by EXTRA macro
11261 int _start_col_offset = p->tokens[_mark]->col_offset;
11262 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011263 { // '{' expressions_list '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011264 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011265 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011266 return NULL;
11267 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011268 D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' expressions_list '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011269 Token * _literal;
11270 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011271 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011272 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011273 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011274 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011275 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011276 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011277 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011278 )
11279 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011280 D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' expressions_list '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011281 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11282 if (_token == NULL) {
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 int _end_lineno = _token->end_lineno;
11287 UNUSED(_end_lineno); // Only used by EXTRA macro
11288 int _end_col_offset = _token->end_col_offset;
11289 UNUSED(_end_col_offset); // Only used by EXTRA macro
11290 _res = _Py_Set ( a , EXTRA );
11291 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011292 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011293 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011294 return NULL;
11295 }
11296 goto done;
11297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011298 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011299 D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
11300 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' expressions_list '}'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011302 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011303 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011304 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011305 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011306}
11307
11308// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
11309static expr_ty
11310setcomp_rule(Parser *p)
11311{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011312 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011313 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011314 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011315 return NULL;
11316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011317 expr_ty _res = NULL;
11318 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011319 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11320 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011321 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011322 return NULL;
11323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011324 int _start_lineno = p->tokens[_mark]->lineno;
11325 UNUSED(_start_lineno); // Only used by EXTRA macro
11326 int _start_col_offset = p->tokens[_mark]->col_offset;
11327 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011328 { // '{' expression for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011329 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011330 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011331 return NULL;
11332 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011333 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 +010011334 Token * _literal;
11335 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011336 expr_ty a;
11337 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011338 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011340 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011341 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011342 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011343 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011344 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011345 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011346 )
11347 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011348 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 +010011349 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11350 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011351 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011352 return NULL;
11353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011354 int _end_lineno = _token->end_lineno;
11355 UNUSED(_end_lineno); // Only used by EXTRA macro
11356 int _end_col_offset = _token->end_col_offset;
11357 UNUSED(_end_col_offset); // Only used by EXTRA macro
11358 _res = _Py_SetComp ( a , b , EXTRA );
11359 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011360 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011361 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011362 return NULL;
11363 }
11364 goto done;
11365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011366 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011367 D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
11368 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' expression for_if_clauses '}'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011369 }
11370 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011371 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011372 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011373 return NULL;
11374 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011375 D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011376 void *invalid_comprehension_var;
11377 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011378 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011379 )
11380 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011381 D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011382 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011383 goto done;
11384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011385 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011386 D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
11387 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011389 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011390 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011391 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011392 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011393}
11394
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011395// dict: '{' double_starred_kvpairs? '}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011396static expr_ty
11397dict_rule(Parser *p)
11398{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011399 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011400 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011401 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011402 return NULL;
11403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011404 expr_ty _res = NULL;
11405 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011406 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11407 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011408 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011409 return NULL;
11410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011411 int _start_lineno = p->tokens[_mark]->lineno;
11412 UNUSED(_start_lineno); // Only used by EXTRA macro
11413 int _start_col_offset = p->tokens[_mark]->col_offset;
11414 UNUSED(_start_col_offset); // Only used by EXTRA macro
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011415 { // '{' double_starred_kvpairs? '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011416 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011417 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011418 return NULL;
11419 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011420 D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011421 Token * _literal;
11422 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011423 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011424 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011425 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011426 &&
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011427 (a = double_starred_kvpairs_rule(p), 1) // double_starred_kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011428 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011429 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011430 )
11431 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011432 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 +010011433 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11434 if (_token == NULL) {
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 int _end_lineno = _token->end_lineno;
11439 UNUSED(_end_lineno); // Only used by EXTRA macro
11440 int _end_col_offset = _token->end_col_offset;
11441 UNUSED(_end_col_offset); // Only used by EXTRA macro
11442 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
11443 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011444 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011445 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011446 return NULL;
11447 }
11448 goto done;
11449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011450 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011451 D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
11452 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011454 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011455 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011456 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011457 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011458}
11459
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011460// dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011461static expr_ty
11462dictcomp_rule(Parser *p)
11463{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011464 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011465 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011466 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011467 return NULL;
11468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011469 expr_ty _res = NULL;
11470 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011471 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11472 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011473 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011474 return NULL;
11475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011476 int _start_lineno = p->tokens[_mark]->lineno;
11477 UNUSED(_start_lineno); // Only used by EXTRA macro
11478 int _start_col_offset = p->tokens[_mark]->col_offset;
11479 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011480 { // '{' kvpair for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011481 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011482 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011483 return NULL;
11484 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011485 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 +010011486 Token * _literal;
11487 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011488 KeyValuePair* a;
11489 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011490 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011491 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011492 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011493 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011494 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011495 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011496 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011497 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011498 )
11499 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011500 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 +010011501 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11502 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011503 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011504 return NULL;
11505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011506 int _end_lineno = _token->end_lineno;
11507 UNUSED(_end_lineno); // Only used by EXTRA macro
11508 int _end_col_offset = _token->end_col_offset;
11509 UNUSED(_end_col_offset); // Only used by EXTRA macro
11510 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
11511 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011512 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011513 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011514 return NULL;
11515 }
11516 goto done;
11517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011518 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011519 D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
11520 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011521 }
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011522 { // invalid_dict_comprehension
11523 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011524 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011525 return NULL;
11526 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011527 D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011528 void *invalid_dict_comprehension_var;
11529 if (
11530 (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p)) // invalid_dict_comprehension
11531 )
11532 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011533 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 +030011534 _res = invalid_dict_comprehension_var;
11535 goto done;
11536 }
11537 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011538 D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
11539 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011541 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011542 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011543 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011544 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011545}
11546
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011547// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011548static asdl_seq*
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011549double_starred_kvpairs_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011550{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011551 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011552 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011553 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011554 return NULL;
11555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011556 asdl_seq* _res = NULL;
11557 int _mark = p->mark;
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011558 { // ','.double_starred_kvpair+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011559 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011560 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011561 return NULL;
11562 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011563 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 +010011564 void *_opt_var;
11565 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011566 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011567 if (
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011568 (a = _gather_102_rule(p)) // ','.double_starred_kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011569 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011570 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011571 )
11572 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011573 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 +010011574 _res = a;
11575 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011576 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011577 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011578 return NULL;
11579 }
11580 goto done;
11581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011582 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011583 D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
11584 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011586 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011587 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011588 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011589 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011590}
11591
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011592// double_starred_kvpair: '**' bitwise_or | kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011593static KeyValuePair*
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011594double_starred_kvpair_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011595{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011596 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011597 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011598 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011599 return NULL;
11600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011601 KeyValuePair* _res = NULL;
11602 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011603 { // '**' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011604 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011605 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011606 return NULL;
11607 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011608 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 +010011609 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011610 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011611 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011612 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011613 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011614 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011615 )
11616 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011617 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 +010011618 _res = _PyPegen_key_value_pair ( p , NULL , a );
11619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011620 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011621 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011622 return NULL;
11623 }
11624 goto done;
11625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011626 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011627 D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
11628 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011629 }
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011630 { // kvpair
11631 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011632 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011633 return NULL;
11634 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011635 D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011636 KeyValuePair* kvpair_var;
11637 if (
11638 (kvpair_var = kvpair_rule(p)) // kvpair
11639 )
11640 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011641 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 +030011642 _res = kvpair_var;
11643 goto done;
11644 }
11645 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011646 D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
11647 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011648 }
11649 _res = NULL;
11650 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011651 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011652 return _res;
11653}
11654
11655// kvpair: expression ':' expression
11656static KeyValuePair*
11657kvpair_rule(Parser *p)
11658{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011659 D(p->level++);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011660 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011661 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030011662 return NULL;
11663 }
11664 KeyValuePair* _res = NULL;
11665 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011666 { // expression ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011667 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011668 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011669 return NULL;
11670 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011671 D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011672 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011673 expr_ty a;
11674 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011675 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011676 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011677 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011678 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011680 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011681 )
11682 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011683 D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011684 _res = _PyPegen_key_value_pair ( p , a , b );
11685 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011686 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011687 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011688 return NULL;
11689 }
11690 goto done;
11691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011692 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011693 D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
11694 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011696 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011697 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011698 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011699 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011700}
11701
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011702// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011703static asdl_seq*
11704for_if_clauses_rule(Parser *p)
11705{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011706 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011707 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011708 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011709 return NULL;
11710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011711 asdl_seq* _res = NULL;
11712 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011713 { // for_if_clause+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011714 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011715 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011716 return NULL;
11717 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011718 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 -070011719 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011720 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011721 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011722 )
11723 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011724 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 +010011725 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011726 goto done;
11727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011728 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011729 D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
11730 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011732 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011733 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011734 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011735 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011736}
11737
11738// for_if_clause:
11739// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
11740// | 'for' star_targets 'in' disjunction (('if' disjunction))*
11741static comprehension_ty
11742for_if_clause_rule(Parser *p)
11743{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011744 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011745 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011746 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011747 return NULL;
11748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011749 comprehension_ty _res = NULL;
11750 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011751 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011752 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011753 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011754 return NULL;
11755 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011756 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 +010011757 Token * _keyword;
11758 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011759 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +010011760 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011761 expr_ty b;
11762 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011763 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011764 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011765 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011766 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011767 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011768 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011769 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011770 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011771 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011772 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011773 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011774 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011775 )
11776 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011777 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 +010011778 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
11779 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011780 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011781 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011782 return NULL;
11783 }
11784 goto done;
11785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011786 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011787 D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
11788 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011789 }
11790 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011791 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011792 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011793 return NULL;
11794 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011795 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 +010011796 Token * _keyword;
11797 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011798 expr_ty a;
11799 expr_ty b;
11800 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011801 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011802 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011804 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011805 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011806 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011807 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011808 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011809 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011810 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030011811 )
11812 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011813 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 +010011814 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
11815 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011816 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011817 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011818 return NULL;
11819 }
11820 goto done;
11821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011822 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011823 D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
11824 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' disjunction (('if' disjunction))*"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011826 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011827 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011828 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011829 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011830}
11831
11832// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
11833static expr_ty
11834yield_expr_rule(Parser *p)
11835{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011836 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011837 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011838 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011839 return NULL;
11840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011841 expr_ty _res = NULL;
11842 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011843 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11844 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011845 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011846 return NULL;
11847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011848 int _start_lineno = p->tokens[_mark]->lineno;
11849 UNUSED(_start_lineno); // Only used by EXTRA macro
11850 int _start_col_offset = p->tokens[_mark]->col_offset;
11851 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011852 { // 'yield' 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011853 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011854 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011855 return NULL;
11856 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011857 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 +010011858 Token * _keyword;
11859 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011860 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011861 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011862 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011863 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011864 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011865 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011866 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011867 )
11868 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011869 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 +010011870 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11871 if (_token == NULL) {
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 int _end_lineno = _token->end_lineno;
11876 UNUSED(_end_lineno); // Only used by EXTRA macro
11877 int _end_col_offset = _token->end_col_offset;
11878 UNUSED(_end_col_offset); // Only used by EXTRA macro
11879 _res = _Py_YieldFrom ( a , EXTRA );
11880 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011881 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011882 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011883 return NULL;
11884 }
11885 goto done;
11886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011887 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011888 D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11889 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011890 }
11891 { // 'yield' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011892 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011893 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011894 return NULL;
11895 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011896 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 +010011897 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011898 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011899 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011900 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011902 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011903 )
11904 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011905 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 +010011906 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11907 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011908 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011909 return NULL;
11910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011911 int _end_lineno = _token->end_lineno;
11912 UNUSED(_end_lineno); // Only used by EXTRA macro
11913 int _end_col_offset = _token->end_col_offset;
11914 UNUSED(_end_col_offset); // Only used by EXTRA macro
11915 _res = _Py_Yield ( a , EXTRA );
11916 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011917 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011918 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011919 return NULL;
11920 }
11921 goto done;
11922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011923 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011924 D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11925 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011927 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011928 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010011929 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011930 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011931}
11932
11933// arguments: args ','? &')' | incorrect_arguments
11934static expr_ty
11935arguments_rule(Parser *p)
11936{
Pablo Galindo800a35c62020-05-25 18:38:45 +010011937 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011938 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011939 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011940 return NULL;
11941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011942 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011943 if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
11944 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011945 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011947 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011948 { // args ','? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011949 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011950 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011951 return NULL;
11952 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011953 D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011954 void *_opt_var;
11955 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011956 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011957 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011958 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011959 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011960 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011961 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011962 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011963 )
11964 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011965 D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011966 _res = a;
11967 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011968 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011969 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011970 return NULL;
11971 }
11972 goto done;
11973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011974 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011975 D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
11976 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011977 }
11978 { // incorrect_arguments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011979 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011980 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011981 return NULL;
11982 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010011983 D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "incorrect_arguments"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011984 void *incorrect_arguments_var;
11985 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011986 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011987 )
11988 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010011989 D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "incorrect_arguments"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011990 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011991 goto done;
11992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011993 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010011994 D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
11995 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "incorrect_arguments"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011997 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011998 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011999 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010012000 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012001 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012002}
12003
12004// args: starred_expression [',' args] | kwargs | named_expression [',' args]
12005static expr_ty
12006args_rule(Parser *p)
12007{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012008 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012009 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012010 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012011 return NULL;
12012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012013 expr_ty _res = NULL;
12014 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012015 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12016 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012017 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012018 return NULL;
12019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012020 int _start_lineno = p->tokens[_mark]->lineno;
12021 UNUSED(_start_lineno); // Only used by EXTRA macro
12022 int _start_col_offset = p->tokens[_mark]->col_offset;
12023 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012024 { // starred_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012025 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012026 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012027 return NULL;
12028 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012029 D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression [',' args]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012030 expr_ty a;
12031 void *b;
12032 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012033 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012034 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012035 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012036 )
12037 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012038 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 +010012039 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12040 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012041 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012042 return NULL;
12043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012044 int _end_lineno = _token->end_lineno;
12045 UNUSED(_end_lineno); // Only used by EXTRA macro
12046 int _end_col_offset = _token->end_col_offset;
12047 UNUSED(_end_col_offset); // Only used by EXTRA macro
12048 _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 );
12049 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012050 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 }
12054 goto done;
12055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012056 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012057 D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
12058 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression [',' args]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012059 }
12060 { // kwargs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012061 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012062 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012063 return NULL;
12064 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012065 D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012066 asdl_seq* a;
12067 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012068 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012069 )
12070 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012071 D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012072 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12073 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012074 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012075 return NULL;
12076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012077 int _end_lineno = _token->end_lineno;
12078 UNUSED(_end_lineno); // Only used by EXTRA macro
12079 int _end_col_offset = _token->end_col_offset;
12080 UNUSED(_end_col_offset); // Only used by EXTRA macro
12081 _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 );
12082 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012083 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012084 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012085 return NULL;
12086 }
12087 goto done;
12088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012089 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012090 D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
12091 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012092 }
12093 { // named_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012094 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012095 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012096 return NULL;
12097 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012098 D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression [',' args]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012099 expr_ty a;
12100 void *b;
12101 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012102 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012103 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012104 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012105 )
12106 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012107 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 +010012108 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12109 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012110 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012111 return NULL;
12112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012113 int _end_lineno = _token->end_lineno;
12114 UNUSED(_end_lineno); // Only used by EXTRA macro
12115 int _end_col_offset = _token->end_col_offset;
12116 UNUSED(_end_col_offset); // Only used by EXTRA macro
12117 _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 );
12118 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012119 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012120 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012121 return NULL;
12122 }
12123 goto done;
12124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012125 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012126 D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
12127 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression [',' args]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012129 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012130 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012131 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012132 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012133}
12134
12135// kwargs:
12136// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
12137// | ','.kwarg_or_starred+
12138// | ','.kwarg_or_double_starred+
12139static asdl_seq*
12140kwargs_rule(Parser *p)
12141{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012142 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012143 if (p->error_indicator) {
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 asdl_seq* _res = NULL;
12148 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012149 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012150 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012151 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012152 return NULL;
12153 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012154 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 +010012155 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012156 asdl_seq * a;
12157 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012159 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012160 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012161 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012163 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012164 )
12165 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012166 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 +010012167 _res = _PyPegen_join_sequences ( p , a , b );
12168 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012169 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012170 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012171 return NULL;
12172 }
12173 goto done;
12174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012175 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012176 D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
12177 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012178 }
12179 { // ','.kwarg_or_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012180 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012181 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012182 return NULL;
12183 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012184 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 -070012185 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012186 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012187 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012188 )
12189 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012190 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 +010012191 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012192 goto done;
12193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012194 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012195 D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
12196 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012197 }
12198 { // ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012199 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012200 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012201 return NULL;
12202 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012203 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 -070012204 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012205 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012206 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012207 )
12208 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012209 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 +010012210 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012211 goto done;
12212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012213 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012214 D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
12215 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012217 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012218 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012219 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012220 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012221}
12222
12223// starred_expression: '*' expression
12224static expr_ty
12225starred_expression_rule(Parser *p)
12226{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012227 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012228 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012229 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012230 return NULL;
12231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012232 expr_ty _res = NULL;
12233 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012234 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12235 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012236 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012237 return NULL;
12238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012239 int _start_lineno = p->tokens[_mark]->lineno;
12240 UNUSED(_start_lineno); // Only used by EXTRA macro
12241 int _start_col_offset = p->tokens[_mark]->col_offset;
12242 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012243 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012244 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012245 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012246 return NULL;
12247 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012248 D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012249 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012250 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012251 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012252 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012253 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012254 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012255 )
12256 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012257 D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012258 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12259 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012260 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012261 return NULL;
12262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012263 int _end_lineno = _token->end_lineno;
12264 UNUSED(_end_lineno); // Only used by EXTRA macro
12265 int _end_col_offset = _token->end_col_offset;
12266 UNUSED(_end_col_offset); // Only used by EXTRA macro
12267 _res = _Py_Starred ( a , Load , EXTRA );
12268 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012269 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 }
12273 goto done;
12274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012275 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012276 D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
12277 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012279 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012280 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012281 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012282 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012283}
12284
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012285// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012286static KeywordOrStarred*
12287kwarg_or_starred_rule(Parser *p)
12288{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012289 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012290 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012291 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012292 return NULL;
12293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012294 KeywordOrStarred* _res = NULL;
12295 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012296 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12297 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012298 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012299 return NULL;
12300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012301 int _start_lineno = p->tokens[_mark]->lineno;
12302 UNUSED(_start_lineno); // Only used by EXTRA macro
12303 int _start_col_offset = p->tokens[_mark]->col_offset;
12304 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012305 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012306 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012307 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012308 return NULL;
12309 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012310 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 +010012311 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012312 expr_ty a;
12313 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012314 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012315 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012316 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012317 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012318 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012319 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012320 )
12321 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012322 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 +010012323 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12324 if (_token == NULL) {
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 int _end_lineno = _token->end_lineno;
12329 UNUSED(_end_lineno); // Only used by EXTRA macro
12330 int _end_col_offset = _token->end_col_offset;
12331 UNUSED(_end_col_offset); // Only used by EXTRA macro
12332 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
12333 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012334 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012335 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012336 return NULL;
12337 }
12338 goto done;
12339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012340 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012341 D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
12342 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012343 }
12344 { // starred_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012345 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012346 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012347 return NULL;
12348 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012349 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 +010012350 expr_ty a;
12351 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012352 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012353 )
12354 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012355 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 +010012356 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
12357 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012358 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012359 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012360 return NULL;
12361 }
12362 goto done;
12363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012364 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012365 D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
12366 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012367 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012368 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012369 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012370 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012371 return NULL;
12372 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012373 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 +030012374 void *invalid_kwarg_var;
12375 if (
12376 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
12377 )
12378 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012379 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 +010012380 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012381 goto done;
12382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012383 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012384 D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
12385 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012387 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012388 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012389 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012390 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012391}
12392
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012393// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012394static KeywordOrStarred*
12395kwarg_or_double_starred_rule(Parser *p)
12396{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012397 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012398 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012399 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012400 return NULL;
12401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012402 KeywordOrStarred* _res = NULL;
12403 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012404 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12405 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012406 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012407 return NULL;
12408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012409 int _start_lineno = p->tokens[_mark]->lineno;
12410 UNUSED(_start_lineno); // Only used by EXTRA macro
12411 int _start_col_offset = p->tokens[_mark]->col_offset;
12412 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012413 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012414 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012415 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012416 return NULL;
12417 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012418 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 +010012419 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012420 expr_ty a;
12421 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012422 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012423 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012424 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012425 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012426 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012427 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012428 )
12429 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012430 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 +010012431 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12432 if (_token == NULL) {
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 int _end_lineno = _token->end_lineno;
12437 UNUSED(_end_lineno); // Only used by EXTRA macro
12438 int _end_col_offset = _token->end_col_offset;
12439 UNUSED(_end_col_offset); // Only used by EXTRA macro
12440 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
12441 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012442 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012443 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012444 return NULL;
12445 }
12446 goto done;
12447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012448 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012449 D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
12450 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012451 }
12452 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012453 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012454 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012455 return NULL;
12456 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012457 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 +010012458 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012459 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012460 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012461 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012462 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012463 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012464 )
12465 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012466 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 +010012467 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12468 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012469 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012470 return NULL;
12471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012472 int _end_lineno = _token->end_lineno;
12473 UNUSED(_end_lineno); // Only used by EXTRA macro
12474 int _end_col_offset = _token->end_col_offset;
12475 UNUSED(_end_col_offset); // Only used by EXTRA macro
12476 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
12477 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012478 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012479 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012480 return NULL;
12481 }
12482 goto done;
12483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012484 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012485 D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
12486 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012487 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012488 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012489 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012490 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012491 return NULL;
12492 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012493 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 +030012494 void *invalid_kwarg_var;
12495 if (
12496 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
12497 )
12498 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012499 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 +010012500 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012501 goto done;
12502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012503 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012504 D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
12505 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030012506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012507 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012508 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012509 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012510 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012511}
12512
12513// star_targets: star_target !',' | star_target ((',' star_target))* ','?
12514static expr_ty
12515star_targets_rule(Parser *p)
12516{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012517 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012518 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012519 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012520 return NULL;
12521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012522 expr_ty _res = NULL;
12523 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012524 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12525 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012526 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012527 return NULL;
12528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012529 int _start_lineno = p->tokens[_mark]->lineno;
12530 UNUSED(_start_lineno); // Only used by EXTRA macro
12531 int _start_col_offset = p->tokens[_mark]->col_offset;
12532 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012533 { // star_target !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012534 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012535 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012536 return NULL;
12537 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012538 D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012539 expr_ty a;
12540 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012541 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012542 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012543 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012544 )
12545 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012546 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 +010012547 _res = a;
12548 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012549 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012550 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012551 return NULL;
12552 }
12553 goto done;
12554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012555 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012556 D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
12557 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012558 }
12559 { // star_target ((',' star_target))* ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012560 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012561 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012562 return NULL;
12563 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012564 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 +010012565 void *_opt_var;
12566 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012567 expr_ty a;
12568 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012569 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012570 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012572 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012573 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012574 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012575 )
12576 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012577 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 +010012578 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12579 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012580 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012581 return NULL;
12582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012583 int _end_lineno = _token->end_lineno;
12584 UNUSED(_end_lineno); // Only used by EXTRA macro
12585 int _end_col_offset = _token->end_col_offset;
12586 UNUSED(_end_col_offset); // Only used by EXTRA macro
12587 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
12588 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012589 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012590 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012591 return NULL;
12592 }
12593 goto done;
12594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012595 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012596 D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
12597 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012599 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012600 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012601 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012602 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012603}
12604
12605// star_targets_seq: ','.star_target+ ','?
12606static asdl_seq*
12607star_targets_seq_rule(Parser *p)
12608{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012609 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012610 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012611 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012612 return NULL;
12613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012614 asdl_seq* _res = NULL;
12615 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012616 { // ','.star_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012617 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012618 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012619 return NULL;
12620 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012621 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 +010012622 void *_opt_var;
12623 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012624 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012625 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012626 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012627 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012628 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012629 )
12630 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012631 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 +010012632 _res = a;
12633 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012634 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012635 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012636 return NULL;
12637 }
12638 goto done;
12639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012640 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012641 D(fprintf(stderr, "%*c%s star_targets_seq[%d-%d]: %s failed!\n", p->level, ' ',
12642 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012644 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012645 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012646 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012647 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012648}
12649
12650// star_target:
12651// | '*' (!'*' star_target)
12652// | t_primary '.' NAME !t_lookahead
12653// | t_primary '[' slices ']' !t_lookahead
12654// | star_atom
12655static expr_ty
12656star_target_rule(Parser *p)
12657{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012658 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012659 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012660 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012661 return NULL;
12662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012663 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012664 if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
12665 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012666 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012668 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012669 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12670 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012671 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012672 return NULL;
12673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012674 int _start_lineno = p->tokens[_mark]->lineno;
12675 UNUSED(_start_lineno); // Only used by EXTRA macro
12676 int _start_col_offset = p->tokens[_mark]->col_offset;
12677 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012678 { // '*' (!'*' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012679 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012680 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012681 return NULL;
12682 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012683 D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012684 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012685 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012686 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012687 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012688 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012689 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012690 )
12691 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012692 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 +010012693 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12694 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012695 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012696 return NULL;
12697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012698 int _end_lineno = _token->end_lineno;
12699 UNUSED(_end_lineno); // Only used by EXTRA macro
12700 int _end_col_offset = _token->end_col_offset;
12701 UNUSED(_end_col_offset); // Only used by EXTRA macro
12702 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
12703 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012704 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 }
12708 goto done;
12709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012710 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012711 D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
12712 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012713 }
12714 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012715 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012716 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012717 return NULL;
12718 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012719 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 +010012720 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012721 expr_ty a;
12722 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012724 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012725 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012726 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012727 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012728 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012729 &&
12730 _PyPegen_lookahead(0, t_lookahead_rule, p)
12731 )
12732 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012733 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 +010012734 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12735 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012736 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012737 return NULL;
12738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012739 int _end_lineno = _token->end_lineno;
12740 UNUSED(_end_lineno); // Only used by EXTRA macro
12741 int _end_col_offset = _token->end_col_offset;
12742 UNUSED(_end_col_offset); // Only used by EXTRA macro
12743 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
12744 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012745 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012746 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012747 return NULL;
12748 }
12749 goto done;
12750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012751 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012752 D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
12753 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012754 }
12755 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012756 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012757 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012758 return NULL;
12759 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012760 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 +010012761 Token * _literal;
12762 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012763 expr_ty a;
12764 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012765 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012766 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012767 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012768 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012769 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012770 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012771 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012772 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012773 &&
12774 _PyPegen_lookahead(0, t_lookahead_rule, p)
12775 )
12776 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012777 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 +010012778 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12779 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012780 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012781 return NULL;
12782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012783 int _end_lineno = _token->end_lineno;
12784 UNUSED(_end_lineno); // Only used by EXTRA macro
12785 int _end_col_offset = _token->end_col_offset;
12786 UNUSED(_end_col_offset); // Only used by EXTRA macro
12787 _res = _Py_Subscript ( a , b , Store , EXTRA );
12788 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012789 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012790 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012791 return NULL;
12792 }
12793 goto done;
12794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012795 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012796 D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
12797 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012798 }
12799 { // star_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012800 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012801 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012802 return NULL;
12803 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012804 D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012805 expr_ty star_atom_var;
12806 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012807 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012808 )
12809 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012810 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 +010012811 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012812 goto done;
12813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012814 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012815 D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
12816 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012818 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012819 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012820 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010012821 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012822 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012823}
12824
12825// star_atom:
12826// | NAME
12827// | '(' star_target ')'
12828// | '(' star_targets_seq? ')'
12829// | '[' star_targets_seq? ']'
12830static expr_ty
12831star_atom_rule(Parser *p)
12832{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012833 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012834 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012835 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012836 return NULL;
12837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012838 expr_ty _res = NULL;
12839 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012840 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12841 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012842 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012843 return NULL;
12844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012845 int _start_lineno = p->tokens[_mark]->lineno;
12846 UNUSED(_start_lineno); // Only used by EXTRA macro
12847 int _start_col_offset = p->tokens[_mark]->col_offset;
12848 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012849 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012850 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012851 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012852 return NULL;
12853 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012854 D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012855 expr_ty a;
12856 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012857 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012858 )
12859 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012860 D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012861 _res = _PyPegen_set_expr_context ( p , a , Store );
12862 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012863 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012864 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012865 return NULL;
12866 }
12867 goto done;
12868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012869 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012870 D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
12871 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012872 }
12873 { // '(' star_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012874 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012875 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012876 return NULL;
12877 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012878 D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012879 Token * _literal;
12880 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012881 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012882 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012883 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012884 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012885 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012886 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012887 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012888 )
12889 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012890 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 +010012891 _res = _PyPegen_set_expr_context ( p , a , Store );
12892 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012893 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012894 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012895 return NULL;
12896 }
12897 goto done;
12898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012899 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012900 D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
12901 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012902 }
12903 { // '(' star_targets_seq? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012904 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012905 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012906 return NULL;
12907 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012908 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 +010012909 Token * _literal;
12910 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012911 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012912 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012913 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012914 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012915 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012916 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012917 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012918 )
12919 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012920 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 +010012921 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12922 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012923 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012924 return NULL;
12925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012926 int _end_lineno = _token->end_lineno;
12927 UNUSED(_end_lineno); // Only used by EXTRA macro
12928 int _end_col_offset = _token->end_col_offset;
12929 UNUSED(_end_col_offset); // Only used by EXTRA macro
12930 _res = _Py_Tuple ( a , Store , EXTRA );
12931 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012932 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012933 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012934 return NULL;
12935 }
12936 goto done;
12937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012938 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012939 D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
12940 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_seq? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012941 }
12942 { // '[' star_targets_seq? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012943 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012944 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012945 return NULL;
12946 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010012947 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 +010012948 Token * _literal;
12949 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012950 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012952 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012953 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012954 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012955 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012956 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012957 )
12958 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012959 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 +010012960 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12961 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012962 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012963 return NULL;
12964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012965 int _end_lineno = _token->end_lineno;
12966 UNUSED(_end_lineno); // Only used by EXTRA macro
12967 int _end_col_offset = _token->end_col_offset;
12968 UNUSED(_end_col_offset); // Only used by EXTRA macro
12969 _res = _Py_List ( a , Store , EXTRA );
12970 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012971 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012972 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012973 return NULL;
12974 }
12975 goto done;
12976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012977 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010012978 D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
12979 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_seq? ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012981 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012982 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010012983 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012984 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012985}
12986
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030012987// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012988static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030012989single_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012990{
Pablo Galindo800a35c62020-05-25 18:38:45 +010012991 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012992 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010012993 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012994 return NULL;
12995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012996 expr_ty _res = NULL;
12997 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030012998 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012999 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013000 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013001 return NULL;
13002 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013003 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 +030013004 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013005 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013006 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013007 )
13008 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013009 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 +030013010 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013011 goto done;
13012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013013 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013014 D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
13015 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013016 }
13017 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013018 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013019 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013020 return NULL;
13021 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013022 D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013023 expr_ty a;
13024 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013025 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013026 )
13027 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013028 D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013029 _res = _PyPegen_set_expr_context ( p , a , Store );
13030 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013031 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013032 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013033 return NULL;
13034 }
13035 goto done;
13036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013037 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013038 D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
13039 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013040 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013041 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013042 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013043 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013044 return NULL;
13045 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013046 D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013047 Token * _literal;
13048 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013049 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013050 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013051 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013052 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013053 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013054 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013055 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013056 )
13057 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013058 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 +010013059 _res = a;
13060 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013061 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013062 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013063 return NULL;
13064 }
13065 goto done;
13066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013067 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013068 D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
13069 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013071 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013072 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013073 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013074 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013075}
13076
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013077// single_subscript_attribute_target:
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013078// | t_primary '.' NAME !t_lookahead
13079// | t_primary '[' slices ']' !t_lookahead
13080static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013081single_subscript_attribute_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013082{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013083 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013084 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013085 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013086 return NULL;
13087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013088 expr_ty _res = NULL;
13089 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013090 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13091 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013092 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013093 return NULL;
13094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013095 int _start_lineno = p->tokens[_mark]->lineno;
13096 UNUSED(_start_lineno); // Only used by EXTRA macro
13097 int _start_col_offset = p->tokens[_mark]->col_offset;
13098 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013099 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013100 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013101 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013102 return NULL;
13103 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013104 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 +010013105 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013106 expr_ty a;
13107 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013108 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013109 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013110 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013111 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013113 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013114 &&
13115 _PyPegen_lookahead(0, t_lookahead_rule, p)
13116 )
13117 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013118 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 +010013119 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13120 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013121 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013122 return NULL;
13123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013124 int _end_lineno = _token->end_lineno;
13125 UNUSED(_end_lineno); // Only used by EXTRA macro
13126 int _end_col_offset = _token->end_col_offset;
13127 UNUSED(_end_col_offset); // Only used by EXTRA macro
13128 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
13129 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013130 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013131 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013132 return NULL;
13133 }
13134 goto done;
13135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013136 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013137 D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
13138 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013139 }
13140 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013141 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013142 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013143 return NULL;
13144 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013145 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 +010013146 Token * _literal;
13147 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013148 expr_ty a;
13149 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013150 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013151 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013152 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013153 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013154 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013155 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013156 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013157 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013158 &&
13159 _PyPegen_lookahead(0, t_lookahead_rule, p)
13160 )
13161 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013162 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 +010013163 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13164 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013165 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013166 return NULL;
13167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013168 int _end_lineno = _token->end_lineno;
13169 UNUSED(_end_lineno); // Only used by EXTRA macro
13170 int _end_col_offset = _token->end_col_offset;
13171 UNUSED(_end_col_offset); // Only used by EXTRA macro
13172 _res = _Py_Subscript ( a , b , Store , EXTRA );
13173 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013174 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013175 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013176 return NULL;
13177 }
13178 goto done;
13179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013180 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013181 D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
13182 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013184 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013185 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013186 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013187 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013188}
13189
13190// del_targets: ','.del_target+ ','?
13191static asdl_seq*
13192del_targets_rule(Parser *p)
13193{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013194 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013195 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013196 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013197 return NULL;
13198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013199 asdl_seq* _res = NULL;
13200 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013201 { // ','.del_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013202 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013203 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013204 return NULL;
13205 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013206 D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013207 void *_opt_var;
13208 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013209 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013210 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013211 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013212 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013213 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013214 )
13215 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013216 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 +010013217 _res = a;
13218 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013219 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013220 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013221 return NULL;
13222 }
13223 goto done;
13224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013225 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013226 D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
13227 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013229 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013230 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013231 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013232 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013233}
13234
13235// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -070013236// | t_primary '.' NAME &del_target_end
13237// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013238// | del_t_atom
13239static expr_ty
13240del_target_rule(Parser *p)
13241{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013242 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013243 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013244 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013245 return NULL;
13246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013247 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013248 if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
13249 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013250 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013252 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013253 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13254 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013255 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013256 return NULL;
13257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013258 int _start_lineno = p->tokens[_mark]->lineno;
13259 UNUSED(_start_lineno); // Only used by EXTRA macro
13260 int _start_col_offset = p->tokens[_mark]->col_offset;
13261 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070013262 { // t_primary '.' NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013263 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013264 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013265 return NULL;
13266 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013267 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 +010013268 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013269 expr_ty a;
13270 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013271 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013272 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013273 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013274 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013275 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013276 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013277 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070013278 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013279 )
13280 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013281 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 +010013282 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13283 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013284 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013285 return NULL;
13286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013287 int _end_lineno = _token->end_lineno;
13288 UNUSED(_end_lineno); // Only used by EXTRA macro
13289 int _end_col_offset = _token->end_col_offset;
13290 UNUSED(_end_col_offset); // Only used by EXTRA macro
13291 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
13292 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013293 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013294 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013295 return NULL;
13296 }
13297 goto done;
13298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013299 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013300 D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
13301 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &del_target_end"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013302 }
Shantanu27c0d9b2020-05-11 14:53:58 -070013303 { // t_primary '[' slices ']' &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013304 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013305 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013306 return NULL;
13307 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013308 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 +010013309 Token * _literal;
13310 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013311 expr_ty a;
13312 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013313 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013314 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013315 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013316 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013318 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013319 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013320 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013321 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070013322 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013323 )
13324 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013325 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 +010013326 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13327 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013328 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013329 return NULL;
13330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013331 int _end_lineno = _token->end_lineno;
13332 UNUSED(_end_lineno); // Only used by EXTRA macro
13333 int _end_col_offset = _token->end_col_offset;
13334 UNUSED(_end_col_offset); // Only used by EXTRA macro
13335 _res = _Py_Subscript ( a , b , Del , EXTRA );
13336 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013337 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013338 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013339 return NULL;
13340 }
13341 goto done;
13342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013343 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013344 D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
13345 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &del_target_end"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013346 }
13347 { // del_t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013348 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013349 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013350 return NULL;
13351 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013352 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 +010013353 expr_ty del_t_atom_var;
13354 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013355 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013356 )
13357 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013358 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 +010013359 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013360 goto done;
13361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013362 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013363 D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
13364 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013366 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013367 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013368 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010013369 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013370 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013371}
13372
Shantanu27c0d9b2020-05-11 14:53:58 -070013373// del_t_atom:
13374// | NAME &del_target_end
13375// | '(' del_target ')'
13376// | '(' del_targets? ')'
13377// | '[' del_targets? ']'
13378// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013379static expr_ty
13380del_t_atom_rule(Parser *p)
13381{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013382 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013383 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013384 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013385 return NULL;
13386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013387 expr_ty _res = NULL;
13388 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013389 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13390 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013391 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013392 return NULL;
13393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013394 int _start_lineno = p->tokens[_mark]->lineno;
13395 UNUSED(_start_lineno); // Only used by EXTRA macro
13396 int _start_col_offset = p->tokens[_mark]->col_offset;
13397 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070013398 { // NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013399 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013400 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013401 return NULL;
13402 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013403 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 +010013404 expr_ty a;
13405 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013406 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -070013407 &&
13408 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013409 )
13410 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013411 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 +010013412 _res = _PyPegen_set_expr_context ( p , a , Del );
13413 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013414 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013415 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013416 return NULL;
13417 }
13418 goto done;
13419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013420 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013421 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13422 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME &del_target_end"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013423 }
13424 { // '(' del_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013425 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013426 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013427 return NULL;
13428 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013429 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 +010013430 Token * _literal;
13431 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013432 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013433 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013434 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013435 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013436 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013437 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013438 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013439 )
13440 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013441 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 +010013442 _res = _PyPegen_set_expr_context ( p , a , Del );
13443 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013444 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013445 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013446 return NULL;
13447 }
13448 goto done;
13449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013450 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013451 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13452 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013453 }
13454 { // '(' del_targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013455 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013456 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013457 return NULL;
13458 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013459 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 +010013460 Token * _literal;
13461 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013462 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013463 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013464 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013465 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013466 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013467 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013468 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013469 )
13470 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013471 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 +010013472 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13473 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013474 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013475 return NULL;
13476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013477 int _end_lineno = _token->end_lineno;
13478 UNUSED(_end_lineno); // Only used by EXTRA macro
13479 int _end_col_offset = _token->end_col_offset;
13480 UNUSED(_end_col_offset); // Only used by EXTRA macro
13481 _res = _Py_Tuple ( a , Del , EXTRA );
13482 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013483 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013484 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013485 return NULL;
13486 }
13487 goto done;
13488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013489 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013490 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13491 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013492 }
13493 { // '[' del_targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013494 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013495 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013496 return NULL;
13497 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013498 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 +010013499 Token * _literal;
13500 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013501 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013502 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013503 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013504 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013505 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013506 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013507 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013508 )
13509 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013510 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 +010013511 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13512 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013513 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013514 return NULL;
13515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013516 int _end_lineno = _token->end_lineno;
13517 UNUSED(_end_lineno); // Only used by EXTRA macro
13518 int _end_col_offset = _token->end_col_offset;
13519 UNUSED(_end_col_offset); // Only used by EXTRA macro
13520 _res = _Py_List ( a , Del , EXTRA );
13521 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013522 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013523 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013524 return NULL;
13525 }
13526 goto done;
13527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013528 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013529 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13530 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013531 }
Shantanu27c0d9b2020-05-11 14:53:58 -070013532 { // invalid_del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013533 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013534 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013535 return NULL;
13536 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013537 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 -070013538 void *invalid_del_target_var;
13539 if (
13540 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
13541 )
13542 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013543 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 -070013544 _res = invalid_del_target_var;
13545 goto done;
13546 }
13547 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013548 D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
13549 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_target"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013550 }
13551 _res = NULL;
13552 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013553 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070013554 return _res;
13555}
13556
13557// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
13558static void *
13559del_target_end_rule(Parser *p)
13560{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013561 D(p->level++);
Shantanu27c0d9b2020-05-11 14:53:58 -070013562 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013563 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070013564 return NULL;
13565 }
13566 void * _res = NULL;
13567 int _mark = p->mark;
13568 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013569 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013570 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013571 return NULL;
13572 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013573 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013574 Token * _literal;
13575 if (
13576 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
13577 )
13578 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013579 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013580 _res = _literal;
13581 goto done;
13582 }
13583 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013584 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13585 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013586 }
13587 { // ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013588 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013589 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013590 return NULL;
13591 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013592 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "']'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013593 Token * _literal;
13594 if (
13595 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
13596 )
13597 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013598 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "']'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013599 _res = _literal;
13600 goto done;
13601 }
13602 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013603 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13604 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "']'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013605 }
13606 { // ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013607 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013608 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013609 return NULL;
13610 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013611 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013612 Token * _literal;
13613 if (
13614 (_literal = _PyPegen_expect_token(p, 12)) // token=','
13615 )
13616 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013617 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013618 _res = _literal;
13619 goto done;
13620 }
13621 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013622 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13623 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013624 }
13625 { // ';'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013626 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013627 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013628 return NULL;
13629 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013630 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013631 Token * _literal;
13632 if (
13633 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
13634 )
13635 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013636 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013637 _res = _literal;
13638 goto done;
13639 }
13640 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013641 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13642 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013643 }
13644 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013645 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013646 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013647 return NULL;
13648 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013649 D(fprintf(stderr, "%*c> del_target_end[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013650 Token * newline_var;
13651 if (
13652 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
13653 )
13654 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013655 D(fprintf(stderr, "%*c+ del_target_end[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013656 _res = newline_var;
13657 goto done;
13658 }
13659 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013660 D(fprintf(stderr, "%*c%s del_target_end[%d-%d]: %s failed!\n", p->level, ' ',
13661 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
Shantanu27c0d9b2020-05-11 14:53:58 -070013662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013663 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013664 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013665 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013666 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013667}
13668
13669// targets: ','.target+ ','?
13670static asdl_seq*
13671targets_rule(Parser *p)
13672{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013673 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013674 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013675 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013676 return NULL;
13677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013678 asdl_seq* _res = NULL;
13679 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013680 { // ','.target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013681 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013682 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013683 return NULL;
13684 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013685 D(fprintf(stderr, "%*c> targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013686 void *_opt_var;
13687 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013688 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013689 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013690 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013691 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013692 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013693 )
13694 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013695 D(fprintf(stderr, "%*c+ targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.target+ ','?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013696 _res = a;
13697 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013698 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013699 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013700 return NULL;
13701 }
13702 goto done;
13703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013704 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013705 D(fprintf(stderr, "%*c%s targets[%d-%d]: %s failed!\n", p->level, ' ',
13706 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.target+ ','?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013708 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013709 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010013710 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013711 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013712}
13713
13714// target:
13715// | t_primary '.' NAME !t_lookahead
13716// | t_primary '[' slices ']' !t_lookahead
13717// | t_atom
13718static expr_ty
13719target_rule(Parser *p)
13720{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013721 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013722 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013723 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013724 return NULL;
13725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013726 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013727 if (_PyPegen_is_memoized(p, target_type, &_res)) {
13728 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013729 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013731 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013732 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13733 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013734 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013735 return NULL;
13736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013737 int _start_lineno = p->tokens[_mark]->lineno;
13738 UNUSED(_start_lineno); // Only used by EXTRA macro
13739 int _start_col_offset = p->tokens[_mark]->col_offset;
13740 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013741 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013742 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013743 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013744 return NULL;
13745 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013746 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 +010013747 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013748 expr_ty a;
13749 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013751 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013752 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013753 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013754 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013755 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013756 &&
13757 _PyPegen_lookahead(0, t_lookahead_rule, p)
13758 )
13759 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013760 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 +010013761 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13762 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013763 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013764 return NULL;
13765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013766 int _end_lineno = _token->end_lineno;
13767 UNUSED(_end_lineno); // Only used by EXTRA macro
13768 int _end_col_offset = _token->end_col_offset;
13769 UNUSED(_end_col_offset); // Only used by EXTRA macro
13770 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
13771 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013772 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013773 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013774 return NULL;
13775 }
13776 goto done;
13777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013778 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013779 D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ',
13780 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013781 }
13782 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013783 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013784 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013785 return NULL;
13786 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013787 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 +010013788 Token * _literal;
13789 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013790 expr_ty a;
13791 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013793 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013794 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013795 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013797 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013798 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013799 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013800 &&
13801 _PyPegen_lookahead(0, t_lookahead_rule, p)
13802 )
13803 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013804 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 +010013805 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13806 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013807 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013808 return NULL;
13809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013810 int _end_lineno = _token->end_lineno;
13811 UNUSED(_end_lineno); // Only used by EXTRA macro
13812 int _end_col_offset = _token->end_col_offset;
13813 UNUSED(_end_col_offset); // Only used by EXTRA macro
13814 _res = _Py_Subscript ( a , b , Store , EXTRA );
13815 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013816 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013817 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013818 return NULL;
13819 }
13820 goto done;
13821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013822 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013823 D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ',
13824 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013825 }
13826 { // t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013827 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013828 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013829 return NULL;
13830 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013831 D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013832 expr_ty t_atom_var;
13833 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013834 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013835 )
13836 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013837 D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_atom"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013838 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013839 goto done;
13840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013841 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013842 D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ',
13843 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_atom"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013845 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013846 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013847 _PyPegen_insert_memo(p, _mark, target_type, _res);
Pablo Galindo800a35c62020-05-25 18:38:45 +010013848 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013849 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013850}
13851
13852// Left-recursive
13853// t_primary:
13854// | t_primary '.' NAME &t_lookahead
13855// | t_primary '[' slices ']' &t_lookahead
13856// | t_primary genexp &t_lookahead
13857// | t_primary '(' arguments? ')' &t_lookahead
13858// | atom &t_lookahead
13859static expr_ty t_primary_raw(Parser *);
13860static expr_ty
13861t_primary_rule(Parser *p)
13862{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013863 D(p->level++);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013864 expr_ty _res = NULL;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013865 if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
13866 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013867 return _res;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013869 int _mark = p->mark;
13870 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013871 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013872 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013873 if (tmpvar_8) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013874 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013875 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013877 p->mark = _mark;
13878 void *_raw = t_primary_raw(p);
13879 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013880 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013881 _resmark = p->mark;
13882 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013884 p->mark = _resmark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013885 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013886 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013887}
13888static expr_ty
13889t_primary_raw(Parser *p)
13890{
Pablo Galindo800a35c62020-05-25 18:38:45 +010013891 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013892 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013893 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013894 return NULL;
13895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013896 expr_ty _res = NULL;
13897 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013898 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13899 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013900 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013901 return NULL;
13902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013903 int _start_lineno = p->tokens[_mark]->lineno;
13904 UNUSED(_start_lineno); // Only used by EXTRA macro
13905 int _start_col_offset = p->tokens[_mark]->col_offset;
13906 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013907 { // t_primary '.' NAME &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013908 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013909 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013910 return NULL;
13911 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013912 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 +010013913 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013914 expr_ty a;
13915 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013916 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013917 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013918 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013919 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013920 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013921 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013922 &&
13923 _PyPegen_lookahead(1, t_lookahead_rule, p)
13924 )
13925 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013926 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 +010013927 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13928 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013929 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013930 return NULL;
13931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013932 int _end_lineno = _token->end_lineno;
13933 UNUSED(_end_lineno); // Only used by EXTRA macro
13934 int _end_col_offset = _token->end_col_offset;
13935 UNUSED(_end_col_offset); // Only used by EXTRA macro
13936 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
13937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013938 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013939 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013940 return NULL;
13941 }
13942 goto done;
13943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013944 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013945 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
13946 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013947 }
13948 { // t_primary '[' slices ']' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013949 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013950 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013951 return NULL;
13952 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013953 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 +010013954 Token * _literal;
13955 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013956 expr_ty a;
13957 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013958 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013959 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013960 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013961 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013962 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013963 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013964 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013965 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013966 &&
13967 _PyPegen_lookahead(1, t_lookahead_rule, p)
13968 )
13969 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013970 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 +010013971 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13972 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013973 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013974 return NULL;
13975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013976 int _end_lineno = _token->end_lineno;
13977 UNUSED(_end_lineno); // Only used by EXTRA macro
13978 int _end_col_offset = _token->end_col_offset;
13979 UNUSED(_end_col_offset); // Only used by EXTRA macro
13980 _res = _Py_Subscript ( a , b , Load , EXTRA );
13981 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013982 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013983 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013984 return NULL;
13985 }
13986 goto done;
13987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013988 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010013989 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
13990 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013991 }
13992 { // t_primary genexp &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013993 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010013994 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013995 return NULL;
13996 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010013997 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 +010013998 expr_ty a;
13999 expr_ty b;
14000 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014001 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014003 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014004 &&
14005 _PyPegen_lookahead(1, t_lookahead_rule, p)
14006 )
14007 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014008 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 +010014009 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14010 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014011 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014012 return NULL;
14013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014014 int _end_lineno = _token->end_lineno;
14015 UNUSED(_end_lineno); // Only used by EXTRA macro
14016 int _end_col_offset = _token->end_col_offset;
14017 UNUSED(_end_col_offset); // Only used by EXTRA macro
14018 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14019 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014020 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014021 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014022 return NULL;
14023 }
14024 goto done;
14025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014026 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014027 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
14028 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014029 }
14030 { // t_primary '(' arguments? ')' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014031 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014032 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014033 return NULL;
14034 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014035 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 +010014036 Token * _literal;
14037 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014038 expr_ty a;
14039 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014040 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014041 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014042 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014043 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014044 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014045 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014046 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014047 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014048 &&
14049 _PyPegen_lookahead(1, t_lookahead_rule, p)
14050 )
14051 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014052 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 +010014053 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14054 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014055 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014056 return NULL;
14057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014058 int _end_lineno = _token->end_lineno;
14059 UNUSED(_end_lineno); // Only used by EXTRA macro
14060 int _end_col_offset = _token->end_col_offset;
14061 UNUSED(_end_col_offset); // Only used by EXTRA macro
14062 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14063 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014064 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014065 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014066 return NULL;
14067 }
14068 goto done;
14069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014070 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014071 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
14072 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014073 }
14074 { // atom &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014075 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014076 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014077 return NULL;
14078 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014079 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 +010014080 expr_ty a;
14081 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014082 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014083 &&
14084 _PyPegen_lookahead(1, t_lookahead_rule, p)
14085 )
14086 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014087 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 +010014088 _res = a;
14089 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014090 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014091 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014092 return NULL;
14093 }
14094 goto done;
14095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014096 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014097 D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
14098 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014100 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014101 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014102 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014103 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014104}
14105
14106// t_lookahead: '(' | '[' | '.'
14107static void *
14108t_lookahead_rule(Parser *p)
14109{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014110 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014111 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014112 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014113 return NULL;
14114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014115 void * _res = NULL;
14116 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014117 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014118 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014119 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014120 return NULL;
14121 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014122 D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014123 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014124 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014125 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014126 )
14127 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014128 D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014129 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014130 goto done;
14131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014132 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014133 D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
14134 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014135 }
14136 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014137 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014138 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014139 return NULL;
14140 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014141 D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014142 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014143 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014144 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014145 )
14146 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014147 D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014148 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014149 goto done;
14150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014151 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014152 D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
14153 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014154 }
14155 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014156 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014157 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014158 return NULL;
14159 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014160 D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014161 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014162 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014163 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014164 )
14165 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014166 D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014167 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014168 goto done;
14169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014170 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014171 D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
14172 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014174 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014175 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014176 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014177 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014178}
14179
14180// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
14181static expr_ty
14182t_atom_rule(Parser *p)
14183{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014184 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014185 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014186 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014187 return NULL;
14188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014189 expr_ty _res = NULL;
14190 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014191 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14192 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014193 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014194 return NULL;
14195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014196 int _start_lineno = p->tokens[_mark]->lineno;
14197 UNUSED(_start_lineno); // Only used by EXTRA macro
14198 int _start_col_offset = p->tokens[_mark]->col_offset;
14199 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014200 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014201 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014202 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014203 return NULL;
14204 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014205 D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014206 expr_ty a;
14207 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014208 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014209 )
14210 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014211 D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 _res = _PyPegen_set_expr_context ( p , a , Store );
14213 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014214 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014215 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014216 return NULL;
14217 }
14218 goto done;
14219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014220 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014221 D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ',
14222 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014223 }
14224 { // '(' target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014225 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014226 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014227 return NULL;
14228 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014229 D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014230 Token * _literal;
14231 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014232 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014233 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014234 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014235 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014236 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014237 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014238 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014239 )
14240 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014241 D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014242 _res = _PyPegen_set_expr_context ( p , a , Store );
14243 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014244 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014245 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014246 return NULL;
14247 }
14248 goto done;
14249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014250 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014251 D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ',
14252 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014253 }
14254 { // '(' targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014255 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014256 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014257 return NULL;
14258 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014259 D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014260 Token * _literal;
14261 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014262 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014263 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014264 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014265 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014266 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014267 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014268 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014269 )
14270 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014271 D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' targets? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014272 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14273 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014274 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014275 return NULL;
14276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014277 int _end_lineno = _token->end_lineno;
14278 UNUSED(_end_lineno); // Only used by EXTRA macro
14279 int _end_col_offset = _token->end_col_offset;
14280 UNUSED(_end_col_offset); // Only used by EXTRA macro
14281 _res = _Py_Tuple ( b , Store , EXTRA );
14282 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014283 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014284 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014285 return NULL;
14286 }
14287 goto done;
14288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014289 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014290 D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ',
14291 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' targets? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014292 }
14293 { // '[' targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014294 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014295 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014296 return NULL;
14297 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014298 D(fprintf(stderr, "%*c> t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014299 Token * _literal;
14300 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014301 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014302 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014303 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014305 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014306 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014307 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014308 )
14309 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014310 D(fprintf(stderr, "%*c+ t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' targets? ']'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014311 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14312 if (_token == NULL) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014313 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014314 return NULL;
14315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014316 int _end_lineno = _token->end_lineno;
14317 UNUSED(_end_lineno); // Only used by EXTRA macro
14318 int _end_col_offset = _token->end_col_offset;
14319 UNUSED(_end_col_offset); // Only used by EXTRA macro
14320 _res = _Py_List ( b , Store , EXTRA );
14321 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014322 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014323 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014324 return NULL;
14325 }
14326 goto done;
14327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014328 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014329 D(fprintf(stderr, "%*c%s t_atom[%d-%d]: %s failed!\n", p->level, ' ',
14330 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' targets? ']'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014332 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014333 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014334 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014335 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014336}
14337
14338// incorrect_arguments:
14339// | args ',' '*'
14340// | expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014341// | args for_if_clauses
14342// | args ',' expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014343// | args ',' args
14344static void *
14345incorrect_arguments_rule(Parser *p)
14346{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014347 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014348 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014349 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014350 return NULL;
14351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014352 void * _res = NULL;
14353 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014354 { // args ',' '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014355 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014356 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014357 return NULL;
14358 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014359 D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014360 Token * _literal;
14361 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014362 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014363 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014364 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014365 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014366 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014367 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014368 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014369 )
14370 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014371 D(fprintf(stderr, "%*c+ incorrect_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014372 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
14373 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014374 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014375 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014376 return NULL;
14377 }
14378 goto done;
14379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014380 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014381 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14382 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' '*'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014383 }
14384 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014385 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014386 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014387 return NULL;
14388 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014389 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 +010014390 Token * _literal;
14391 void *_opt_var;
14392 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014393 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014394 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014395 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014396 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014397 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014398 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
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 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
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, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014406 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014407 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, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014417 }
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014418 { // args for_if_clauses
14419 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014420 D(p->level--);
Lysandros Nikolaouae145832020-05-22 03:56:52 +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, "args for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014424 expr_ty a;
14425 asdl_seq* for_if_clauses_var;
14426 if (
14427 (a = args_rule(p)) // args
14428 &&
14429 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
14430 )
14431 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014432 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 +030014433 _res = _PyPegen_nonparen_genexp_in_call ( p , a );
14434 if (_res == NULL && PyErr_Occurred()) {
14435 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014436 D(p->level--);
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014437 return NULL;
14438 }
14439 goto done;
14440 }
14441 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014442 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14443 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014444 }
14445 { // args ',' expression for_if_clauses
14446 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014447 D(p->level--);
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014448 return NULL;
14449 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014450 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 +030014451 Token * _literal;
14452 expr_ty a;
14453 expr_ty args_var;
14454 asdl_seq* for_if_clauses_var;
14455 if (
14456 (args_var = args_rule(p)) // args
14457 &&
14458 (_literal = _PyPegen_expect_token(p, 12)) // token=','
14459 &&
14460 (a = expression_rule(p)) // expression
14461 &&
14462 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
14463 )
14464 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014465 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 +030014466 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
14467 if (_res == NULL && PyErr_Occurred()) {
14468 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014469 D(p->level--);
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014470 return NULL;
14471 }
14472 goto done;
14473 }
14474 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014475 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14476 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
Lysandros Nikolaouae145832020-05-22 03:56:52 +030014477 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014478 { // args ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014479 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014480 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014481 return NULL;
14482 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014483 D(fprintf(stderr, "%*c> incorrect_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014484 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014485 expr_ty a;
14486 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014487 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014488 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014489 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014490 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014491 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014492 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014493 )
14494 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014495 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 +010014496 _res = _PyPegen_arguments_parsing_error ( p , a );
14497 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014498 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014499 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014500 return NULL;
14501 }
14502 goto done;
14503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014504 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014505 D(fprintf(stderr, "%*c%s incorrect_arguments[%d-%d]: %s failed!\n", p->level, ' ',
14506 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014508 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014509 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014510 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014511 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014512}
14513
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014514// invalid_kwarg: expression '='
14515static void *
14516invalid_kwarg_rule(Parser *p)
14517{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014518 D(p->level++);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014519 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014520 D(p->level--);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014521 return NULL;
14522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014523 void * _res = NULL;
14524 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014525 { // expression '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014526 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014527 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014528 return NULL;
14529 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014530 D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression '='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014531 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014532 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014533 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014534 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014535 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014536 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014537 )
14538 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014539 D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression '='"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014540 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014541 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014542 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014543 D(p->level--);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014544 return NULL;
14545 }
14546 goto done;
14547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014548 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014549 D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
14550 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression '='"));
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014552 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014553 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014554 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014555 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030014556}
14557
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014558// invalid_named_expression: expression ':=' expression
14559static void *
14560invalid_named_expression_rule(Parser *p)
14561{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014562 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014563 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014564 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014565 return NULL;
14566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014567 void * _res = NULL;
14568 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014569 { // expression ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014570 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014571 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014572 return NULL;
14573 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014574 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 +010014575 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014576 expr_ty a;
14577 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014578 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014579 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014580 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014581 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014582 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014583 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014584 )
14585 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014586 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 +030014587 _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 +010014588 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014589 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014590 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014591 return NULL;
14592 }
14593 goto done;
14594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014595 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014596 D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
14597 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014599 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014600 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014601 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014602 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014603}
14604
14605// invalid_assignment:
14606// | list ':'
14607// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014608// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014609// | expression ':' expression ['=' annotated_rhs]
Pablo Galindo9f495902020-06-08 02:57:00 +010014610// | ((star_targets '='))* star_expressions '='
14611// | ((star_targets '='))* yield_expr '='
Pablo Galindo16ab0702020-05-15 02:04:52 +010014612// | star_expressions augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014613static void *
14614invalid_assignment_rule(Parser *p)
14615{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014616 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014617 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014618 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014619 return NULL;
14620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014621 void * _res = NULL;
14622 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014623 { // list ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014624 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014625 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014626 return NULL;
14627 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014628 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list ':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014629 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014630 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014631 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014632 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014633 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014634 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014635 )
14636 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014637 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list ':'"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014638 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014639 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014640 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014641 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014642 return NULL;
14643 }
14644 goto done;
14645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014646 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014647 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14648 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list ':'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014649 }
14650 { // tuple ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014651 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014652 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014653 return NULL;
14654 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014655 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple ':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014656 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014657 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014658 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014659 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014660 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014661 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014662 )
14663 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014664 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple ':'"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014665 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
14666 if (_res == NULL && PyErr_Occurred()) {
14667 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014668 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014669 return NULL;
14670 }
14671 goto done;
14672 }
14673 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014674 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14675 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple ':'"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014676 }
14677 { // star_named_expression ',' star_named_expressions* ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014678 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014679 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014680 return NULL;
14681 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014682 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 +030014683 Token * _literal;
14684 Token * _literal_1;
14685 asdl_seq * _loop0_126_var;
14686 expr_ty a;
14687 if (
14688 (a = star_named_expression_rule(p)) // star_named_expression
14689 &&
14690 (_literal = _PyPegen_expect_token(p, 12)) // token=','
14691 &&
14692 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
14693 &&
14694 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
14695 )
14696 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014697 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 +030014698 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014699 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014700 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014701 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014702 return NULL;
14703 }
14704 goto done;
14705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014706 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014707 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14708 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014709 }
14710 { // expression ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014711 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014712 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014713 return NULL;
14714 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014715 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 +010014716 Token * _literal;
14717 void *_opt_var;
14718 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014719 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014720 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014721 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014722 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014723 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014724 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014725 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014726 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014727 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014728 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014729 )
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, "expression ':' expression ['=' annotated_rhs]"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014732 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
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, "expression ':' expression ['=' annotated_rhs]"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014743 }
Pablo Galindo9f495902020-06-08 02:57:00 +010014744 { // ((star_targets '='))* star_expressions '='
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 Galindo9f495902020-06-08 02:57:00 +010014749 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 +010014750 Token * _literal;
Pablo Galindo9f495902020-06-08 02:57:00 +010014751 asdl_seq * _loop0_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014752 expr_ty a;
14753 if (
Pablo Galindo9f495902020-06-08 02:57:00 +010014754 (_loop0_128_var = _loop0_128_rule(p)) // ((star_targets '='))*
14755 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010014756 (a = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014757 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010014758 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindo16ab0702020-05-15 02:04:52 +010014759 )
14760 {
Pablo Galindo9f495902020-06-08 02:57:00 +010014761 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 +010014762 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( _PyPegen_get_invalid_target ( a ) , "cannot assign to %s" , _PyPegen_get_expr_name ( _PyPegen_get_invalid_target ( a ) ) );
14763 if (_res == NULL && PyErr_Occurred()) {
14764 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014765 D(p->level--);
Pablo Galindo16ab0702020-05-15 02:04:52 +010014766 return NULL;
14767 }
14768 goto done;
14769 }
14770 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014771 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +010014772 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
14773 }
14774 { // ((star_targets '='))* yield_expr '='
14775 if (p->error_indicator) {
14776 D(p->level--);
14777 return NULL;
14778 }
14779 D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
14780 Token * _literal;
14781 asdl_seq * _loop0_129_var;
14782 expr_ty a;
14783 if (
14784 (_loop0_129_var = _loop0_129_rule(p)) // ((star_targets '='))*
14785 &&
14786 (a = yield_expr_rule(p)) // yield_expr
14787 &&
14788 (_literal = _PyPegen_expect_token(p, 22)) // token='='
14789 )
14790 {
14791 D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
14792 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
14793 if (_res == NULL && PyErr_Occurred()) {
14794 p->error_indicator = 1;
14795 D(p->level--);
14796 return NULL;
14797 }
14798 goto done;
14799 }
14800 p->mark = _mark;
14801 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14802 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
Pablo Galindo16ab0702020-05-15 02:04:52 +010014803 }
14804 { // star_expressions augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014805 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014806 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014807 return NULL;
14808 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014809 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 +010014810 void *_tmp_130_var;
Pablo Galindo16ab0702020-05-15 02:04:52 +010014811 expr_ty a;
14812 AugOperator* augassign_var;
14813 if (
14814 (a = star_expressions_rule(p)) // star_expressions
14815 &&
14816 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010014817 &&
Pablo Galindo9f495902020-06-08 02:57:00 +010014818 (_tmp_130_var = _tmp_130_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014819 )
14820 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014821 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 +010014822 _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 +010014823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014824 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014825 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014826 return NULL;
14827 }
14828 goto done;
14829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014830 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014831 D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
14832 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014835 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014836 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014837 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014838}
14839
14840// invalid_block: NEWLINE !INDENT
14841static void *
14842invalid_block_rule(Parser *p)
14843{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014844 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014845 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014846 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014847 return NULL;
14848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014849 void * _res = NULL;
14850 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014851 { // NEWLINE !INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014852 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014853 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014854 return NULL;
14855 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014856 D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010014857 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014858 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014859 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014860 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014861 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014862 )
14863 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014864 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 +010014865 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
14866 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014867 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014868 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014869 return NULL;
14870 }
14871 goto done;
14872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014873 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014874 D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
14875 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014877 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014878 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014879 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014880 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014881}
14882
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014883// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014884static void *
14885invalid_comprehension_rule(Parser *p)
14886{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014887 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014888 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014889 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014890 return NULL;
14891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014892 void * _res = NULL;
14893 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014894 { // ('[' | '(' | '{') starred_expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014895 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014896 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014897 return NULL;
14898 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014899 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 +010014900 void *_tmp_131_var;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014901 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014902 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014903 if (
Pablo Galindo9f495902020-06-08 02:57:00 +010014904 (_tmp_131_var = _tmp_131_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014905 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014906 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014907 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014908 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014909 )
14910 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014911 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 +030014912 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014913 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014914 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014915 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014916 return NULL;
14917 }
14918 goto done;
14919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014920 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014921 D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
14922 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014924 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014925 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014926 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014927 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014928}
14929
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014930// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
14931static void *
14932invalid_dict_comprehension_rule(Parser *p)
14933{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014934 D(p->level++);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014935 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014936 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014937 return NULL;
14938 }
14939 void * _res = NULL;
14940 int _mark = p->mark;
14941 { // '{' '**' bitwise_or for_if_clauses '}'
14942 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014943 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014944 return NULL;
14945 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010014946 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 +030014947 Token * _literal;
14948 Token * _literal_1;
14949 Token * a;
14950 expr_ty bitwise_or_var;
14951 asdl_seq* for_if_clauses_var;
14952 if (
14953 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
14954 &&
14955 (a = _PyPegen_expect_token(p, 35)) // token='**'
14956 &&
14957 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
14958 &&
14959 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
14960 &&
14961 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
14962 )
14963 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014964 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 +030014965 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
14966 if (_res == NULL && PyErr_Occurred()) {
14967 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014968 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014969 return NULL;
14970 }
14971 goto done;
14972 }
14973 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010014974 D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
14975 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014976 }
14977 _res = NULL;
14978 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010014979 D(p->level--);
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030014980 return _res;
14981}
14982
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014983// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070014984// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014985static void *
14986invalid_parameters_rule(Parser *p)
14987{
Pablo Galindo800a35c62020-05-25 18:38:45 +010014988 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014989 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014990 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014991 return NULL;
14992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014993 void * _res = NULL;
14994 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014995 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014996 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010014997 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014998 return NULL;
14999 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015000 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 +010015001 asdl_seq * _loop0_132_var;
15002 void *_tmp_133_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015003 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015004 if (
Pablo Galindo9f495902020-06-08 02:57:00 +010015005 (_loop0_132_var = _loop0_132_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015006 &&
Pablo Galindo9f495902020-06-08 02:57:00 +010015007 (_tmp_133_var = _tmp_133_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015008 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015009 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015010 )
15011 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015012 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 +010015013 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
15014 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015015 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015016 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015017 return NULL;
15018 }
15019 goto done;
15020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015021 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015022 D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15023 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 +010015024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015025 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015026 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015027 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015028 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015029}
15030
Pablo Galindoc6483c92020-06-10 14:07:06 +010015031// invalid_lambda_parameters:
15032// | lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default
15033static void *
15034invalid_lambda_parameters_rule(Parser *p)
15035{
15036 D(p->level++);
15037 if (p->error_indicator) {
15038 D(p->level--);
15039 return NULL;
15040 }
15041 void * _res = NULL;
15042 int _mark = p->mark;
15043 { // lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default
15044 if (p->error_indicator) {
15045 D(p->level--);
15046 return NULL;
15047 }
15048 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"));
15049 asdl_seq * _loop0_134_var;
15050 void *_tmp_135_var;
15051 arg_ty lambda_param_no_default_var;
15052 if (
15053 (_loop0_134_var = _loop0_134_rule(p)) // lambda_param_no_default*
15054 &&
15055 (_tmp_135_var = _tmp_135_rule(p)) // lambda_slash_with_default | lambda_param_with_default+
15056 &&
15057 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
15058 )
15059 {
15060 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"));
15061 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
15062 if (_res == NULL && PyErr_Occurred()) {
15063 p->error_indicator = 1;
15064 D(p->level--);
15065 return NULL;
15066 }
15067 goto done;
15068 }
15069 p->mark = _mark;
15070 D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15071 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* (lambda_slash_with_default | lambda_param_with_default+) lambda_param_no_default"));
15072 }
15073 _res = NULL;
15074 done:
15075 D(p->level--);
15076 return _res;
15077}
15078
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015079// invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015080static void *
15081invalid_star_etc_rule(Parser *p)
15082{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015083 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015084 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015085 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015086 return NULL;
15087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015088 void * _res = NULL;
15089 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015090 { // '*' (')' | ',' (')' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015091 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015092 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015093 return NULL;
15094 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015095 D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015096 Token * _literal;
Pablo Galindoc6483c92020-06-10 14:07:06 +010015097 void *_tmp_136_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015098 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015099 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015100 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +010015101 (_tmp_136_var = _tmp_136_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015102 )
15103 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015104 D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015105 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
15106 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015107 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015108 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015109 return NULL;
15110 }
15111 goto done;
15112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015113 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015114 D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15115 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015116 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015117 { // '*' ',' TYPE_COMMENT
Pablo Galindoced4e5c2020-05-18 22:47:51 +010015118 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015119 D(p->level--);
Pablo Galindoced4e5c2020-05-18 22:47:51 +010015120 return NULL;
15121 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015122 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 +030015123 Token * _literal;
15124 Token * _literal_1;
15125 Token * type_comment_var;
15126 if (
15127 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
15128 &&
15129 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
15130 &&
15131 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
15132 )
15133 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015134 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 +030015135 _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
15136 if (_res == NULL && PyErr_Occurred()) {
15137 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015138 D(p->level--);
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015139 return NULL;
15140 }
15141 goto done;
15142 }
15143 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015144 D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15145 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030015146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015147 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015148 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015149 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015150 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015151}
15152
15153// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
15154static void *
15155invalid_lambda_star_etc_rule(Parser *p)
15156{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015157 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015158 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015159 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015160 return NULL;
15161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015162 void * _res = NULL;
15163 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015164 { // '*' (':' | ',' (':' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015165 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015166 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015167 return NULL;
15168 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015169 D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015170 Token * _literal;
Pablo Galindoc6483c92020-06-10 14:07:06 +010015171 void *_tmp_137_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015172 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015173 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015174 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +010015175 (_tmp_137_var = _tmp_137_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015176 )
15177 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015178 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 +010015179 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
15180 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015181 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015182 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015183 return NULL;
15184 }
15185 goto done;
15186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015187 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015188 D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15189 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015191 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015192 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015193 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015194 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015195}
15196
Guido van Rossumc001c092020-04-30 12:12:19 -070015197// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
15198static void *
15199invalid_double_type_comments_rule(Parser *p)
15200{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015201 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015202 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015203 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015204 return NULL;
15205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015206 void * _res = NULL;
15207 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015208 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015209 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015210 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015211 return NULL;
15212 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015213 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 +010015214 Token * indent_var;
15215 Token * newline_var;
15216 Token * newline_var_1;
15217 Token * type_comment_var;
15218 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070015219 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015220 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070015221 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015222 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070015223 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015224 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070015225 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015226 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070015227 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015228 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070015229 )
15230 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015231 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 +010015232 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
15233 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015234 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015235 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015236 return NULL;
15237 }
15238 goto done;
15239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015240 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015241 D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
15242 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015244 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015245 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015246 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015247 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015248}
15249
Shantanu27c0d9b2020-05-11 14:53:58 -070015250// invalid_del_target: star_expression &del_target_end
15251static void *
15252invalid_del_target_rule(Parser *p)
15253{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015254 D(p->level++);
Shantanu27c0d9b2020-05-11 14:53:58 -070015255 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015256 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070015257 return NULL;
15258 }
15259 void * _res = NULL;
15260 int _mark = p->mark;
15261 { // star_expression &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015262 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015263 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015264 return NULL;
15265 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015266 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 -070015267 expr_ty a;
15268 if (
15269 (a = star_expression_rule(p)) // star_expression
15270 &&
15271 _PyPegen_lookahead(1, del_target_end_rule, p)
15272 )
15273 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015274 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 +030015275 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070015276 if (_res == NULL && PyErr_Occurred()) {
15277 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015278 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070015279 return NULL;
15280 }
15281 goto done;
15282 }
15283 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015284 D(fprintf(stderr, "%*c%s invalid_del_target[%d-%d]: %s failed!\n", p->level, ' ',
15285 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression &del_target_end"));
Shantanu27c0d9b2020-05-11 14:53:58 -070015286 }
15287 _res = NULL;
15288 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015289 D(p->level--);
Shantanu27c0d9b2020-05-11 14:53:58 -070015290 return _res;
15291}
15292
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015293// invalid_import_from_targets: import_from_as_names ','
15294static void *
15295invalid_import_from_targets_rule(Parser *p)
15296{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015297 D(p->level++);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015298 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015299 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015300 return NULL;
15301 }
15302 void * _res = NULL;
15303 int _mark = p->mark;
15304 { // import_from_as_names ','
15305 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015306 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015307 return NULL;
15308 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015309 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 +030015310 Token * _literal;
15311 asdl_seq* import_from_as_names_var;
15312 if (
15313 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
15314 &&
15315 (_literal = _PyPegen_expect_token(p, 12)) // token=','
15316 )
15317 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015318 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 +030015319 _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
15320 if (_res == NULL && PyErr_Occurred()) {
15321 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015322 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015323 return NULL;
15324 }
15325 goto done;
15326 }
15327 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015328 D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
15329 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ','"));
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015330 }
15331 _res = NULL;
15332 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015333 D(p->level--);
Batuhan Taskaya72e0aa22020-05-21 23:41:58 +030015334 return _res;
15335}
15336
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015337// _loop0_1: NEWLINE
15338static asdl_seq *
15339_loop0_1_rule(Parser *p)
15340{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015341 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015342 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015343 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015344 return NULL;
15345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015346 void *_res = NULL;
15347 int _mark = p->mark;
15348 int _start_mark = p->mark;
15349 void **_children = PyMem_Malloc(sizeof(void *));
15350 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015351 p->error_indicator = 1;
15352 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015353 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015354 return NULL;
15355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015356 ssize_t _children_capacity = 1;
15357 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015358 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015359 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015360 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015361 return NULL;
15362 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015363 D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010015364 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015365 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015366 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015367 )
15368 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015369 _res = newline_var;
15370 if (_n == _children_capacity) {
15371 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015372 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15373 if (!_new_children) {
15374 p->error_indicator = 1;
15375 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015376 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015377 return NULL;
15378 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015379 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015381 _children[_n++] = _res;
15382 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015384 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015385 D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
15386 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015388 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15389 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015390 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015391 p->error_indicator = 1;
15392 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015393 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015394 return NULL;
15395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015396 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15397 PyMem_Free(_children);
15398 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015399 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015400 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015401}
15402
Guido van Rossumc001c092020-04-30 12:12:19 -070015403// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015404static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070015405_loop0_2_rule(Parser *p)
15406{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015407 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015408 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015409 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015410 return NULL;
15411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015412 void *_res = NULL;
15413 int _mark = p->mark;
15414 int _start_mark = p->mark;
15415 void **_children = PyMem_Malloc(sizeof(void *));
15416 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015417 p->error_indicator = 1;
15418 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015419 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015420 return NULL;
15421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015422 ssize_t _children_capacity = 1;
15423 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015424 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015425 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015426 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015427 return NULL;
15428 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015429 D(fprintf(stderr, "%*c> _loop0_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010015430 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015431 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015432 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070015433 )
15434 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015435 _res = newline_var;
15436 if (_n == _children_capacity) {
15437 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015438 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15439 if (!_new_children) {
15440 p->error_indicator = 1;
15441 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015442 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015443 return NULL;
15444 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015445 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015447 _children[_n++] = _res;
15448 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015450 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015451 D(fprintf(stderr, "%*c%s _loop0_2[%d-%d]: %s failed!\n", p->level, ' ',
15452 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015454 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15455 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015456 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015457 p->error_indicator = 1;
15458 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015459 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015460 return NULL;
15461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015462 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15463 PyMem_Free(_children);
15464 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015465 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015466 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015467}
15468
15469// _loop0_4: ',' expression
15470static asdl_seq *
15471_loop0_4_rule(Parser *p)
15472{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015473 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015474 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015475 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015476 return NULL;
15477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015478 void *_res = NULL;
15479 int _mark = p->mark;
15480 int _start_mark = p->mark;
15481 void **_children = PyMem_Malloc(sizeof(void *));
15482 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015483 p->error_indicator = 1;
15484 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015485 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015486 return NULL;
15487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015488 ssize_t _children_capacity = 1;
15489 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015490 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015491 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015492 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015493 return NULL;
15494 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015495 D(fprintf(stderr, "%*c> _loop0_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015496 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015497 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015498 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015499 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015500 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015501 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015502 )
15503 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015504 _res = elem;
15505 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015506 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015507 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015508 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015509 return NULL;
15510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015511 if (_n == _children_capacity) {
15512 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015513 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15514 if (!_new_children) {
15515 p->error_indicator = 1;
15516 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015517 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015518 return NULL;
15519 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015520 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015522 _children[_n++] = _res;
15523 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015525 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015526 D(fprintf(stderr, "%*c%s _loop0_4[%d-%d]: %s failed!\n", p->level, ' ',
15527 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015529 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15530 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015531 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015532 p->error_indicator = 1;
15533 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015534 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015535 return NULL;
15536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015537 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15538 PyMem_Free(_children);
15539 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015540 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015541 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015542}
15543
15544// _gather_3: expression _loop0_4
15545static asdl_seq *
15546_gather_3_rule(Parser *p)
15547{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015548 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015549 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015550 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015551 return NULL;
15552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015553 asdl_seq * _res = NULL;
15554 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015555 { // expression _loop0_4
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015556 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015557 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015558 return NULL;
15559 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015560 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 -070015561 expr_ty elem;
15562 asdl_seq * seq;
15563 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015564 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015565 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015566 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070015567 )
15568 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015569 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 +010015570 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015571 goto done;
15572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015573 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015574 D(fprintf(stderr, "%*c%s _gather_3[%d-%d]: %s failed!\n", p->level, ' ',
15575 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_4"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015577 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015578 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015579 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015580 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015581}
15582
15583// _loop0_6: ',' expression
15584static asdl_seq *
15585_loop0_6_rule(Parser *p)
15586{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015587 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015588 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015589 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015590 return NULL;
15591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015592 void *_res = NULL;
15593 int _mark = p->mark;
15594 int _start_mark = p->mark;
15595 void **_children = PyMem_Malloc(sizeof(void *));
15596 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015597 p->error_indicator = 1;
15598 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015599 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015600 return NULL;
15601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015602 ssize_t _children_capacity = 1;
15603 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015604 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015605 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015606 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015607 return NULL;
15608 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015609 D(fprintf(stderr, "%*c> _loop0_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015610 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015611 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015612 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015613 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015614 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015615 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015616 )
15617 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015618 _res = elem;
15619 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015620 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015621 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015622 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015623 return NULL;
15624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015625 if (_n == _children_capacity) {
15626 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015627 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15628 if (!_new_children) {
15629 p->error_indicator = 1;
15630 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015631 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015632 return NULL;
15633 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015634 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015636 _children[_n++] = _res;
15637 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015639 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015640 D(fprintf(stderr, "%*c%s _loop0_6[%d-%d]: %s failed!\n", p->level, ' ',
15641 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015643 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15644 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015645 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015646 p->error_indicator = 1;
15647 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015648 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015649 return NULL;
15650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015651 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15652 PyMem_Free(_children);
15653 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015654 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015655 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015656}
15657
15658// _gather_5: expression _loop0_6
15659static asdl_seq *
15660_gather_5_rule(Parser *p)
15661{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015662 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015663 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015664 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015665 return NULL;
15666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015667 asdl_seq * _res = NULL;
15668 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015669 { // expression _loop0_6
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015670 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015671 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015672 return NULL;
15673 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015674 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 -070015675 expr_ty elem;
15676 asdl_seq * seq;
15677 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015678 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015680 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070015681 )
15682 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015683 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 +010015684 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015685 goto done;
15686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015687 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015688 D(fprintf(stderr, "%*c%s _gather_5[%d-%d]: %s failed!\n", p->level, ' ',
15689 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_6"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015691 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015692 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015693 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015694 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015695}
15696
15697// _loop0_8: ',' expression
15698static asdl_seq *
15699_loop0_8_rule(Parser *p)
15700{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015701 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015702 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015703 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015704 return NULL;
15705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015706 void *_res = NULL;
15707 int _mark = p->mark;
15708 int _start_mark = p->mark;
15709 void **_children = PyMem_Malloc(sizeof(void *));
15710 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015711 p->error_indicator = 1;
15712 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015713 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015714 return NULL;
15715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015716 ssize_t _children_capacity = 1;
15717 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015718 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015719 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015720 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015721 return NULL;
15722 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015723 D(fprintf(stderr, "%*c> _loop0_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015724 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015725 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015726 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015727 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015729 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015730 )
15731 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015732 _res = elem;
15733 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015734 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015735 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015736 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015737 return NULL;
15738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015739 if (_n == _children_capacity) {
15740 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015741 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15742 if (!_new_children) {
15743 p->error_indicator = 1;
15744 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015745 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015746 return NULL;
15747 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015748 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015750 _children[_n++] = _res;
15751 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015753 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015754 D(fprintf(stderr, "%*c%s _loop0_8[%d-%d]: %s failed!\n", p->level, ' ',
15755 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015757 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15758 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015759 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015760 p->error_indicator = 1;
15761 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015762 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015763 return NULL;
15764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015765 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15766 PyMem_Free(_children);
15767 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015768 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015769 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015770}
15771
15772// _gather_7: expression _loop0_8
15773static asdl_seq *
15774_gather_7_rule(Parser *p)
15775{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015776 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015777 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015778 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015779 return NULL;
15780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015781 asdl_seq * _res = NULL;
15782 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015783 { // expression _loop0_8
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015784 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015785 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015786 return NULL;
15787 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015788 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 -070015789 expr_ty elem;
15790 asdl_seq * seq;
15791 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015792 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015793 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015794 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070015795 )
15796 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015797 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 +010015798 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015799 goto done;
15800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015801 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015802 D(fprintf(stderr, "%*c%s _gather_7[%d-%d]: %s failed!\n", p->level, ' ',
15803 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_8"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015805 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015806 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015807 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015808 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015809}
15810
15811// _loop0_10: ',' expression
15812static asdl_seq *
15813_loop0_10_rule(Parser *p)
15814{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015815 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015816 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015817 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015818 return NULL;
15819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015820 void *_res = NULL;
15821 int _mark = p->mark;
15822 int _start_mark = p->mark;
15823 void **_children = PyMem_Malloc(sizeof(void *));
15824 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015825 p->error_indicator = 1;
15826 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015827 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015828 return NULL;
15829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015830 ssize_t _children_capacity = 1;
15831 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015832 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015833 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015834 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015835 return NULL;
15836 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015837 D(fprintf(stderr, "%*c> _loop0_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015838 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015839 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015840 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015841 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015842 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015843 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015844 )
15845 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015846 _res = elem;
15847 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015848 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015849 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015850 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015851 return NULL;
15852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015853 if (_n == _children_capacity) {
15854 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015855 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15856 if (!_new_children) {
15857 p->error_indicator = 1;
15858 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015859 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015860 return NULL;
15861 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015862 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015864 _children[_n++] = _res;
15865 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015867 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015868 D(fprintf(stderr, "%*c%s _loop0_10[%d-%d]: %s failed!\n", p->level, ' ',
15869 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015871 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15872 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015873 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015874 p->error_indicator = 1;
15875 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015876 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015877 return NULL;
15878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015879 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15880 PyMem_Free(_children);
15881 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015882 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015883 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015884}
15885
15886// _gather_9: expression _loop0_10
15887static asdl_seq *
15888_gather_9_rule(Parser *p)
15889{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015890 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070015891 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015892 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070015893 return NULL;
15894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015895 asdl_seq * _res = NULL;
15896 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015897 { // expression _loop0_10
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015898 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015899 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015900 return NULL;
15901 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015902 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 -070015903 expr_ty elem;
15904 asdl_seq * seq;
15905 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015906 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070015907 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015908 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070015909 )
15910 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015911 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 +010015912 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015913 goto done;
15914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015915 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015916 D(fprintf(stderr, "%*c%s _gather_9[%d-%d]: %s failed!\n", p->level, ' ',
15917 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_10"));
Guido van Rossumc001c092020-04-30 12:12:19 -070015918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015919 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015920 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010015921 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015922 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015923}
15924
15925// _loop1_11: statement
15926static asdl_seq *
15927_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015928{
Pablo Galindo800a35c62020-05-25 18:38:45 +010015929 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015930 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015931 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015932 return NULL;
15933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015934 void *_res = NULL;
15935 int _mark = p->mark;
15936 int _start_mark = p->mark;
15937 void **_children = PyMem_Malloc(sizeof(void *));
15938 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015939 p->error_indicator = 1;
15940 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015941 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015942 return NULL;
15943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015944 ssize_t _children_capacity = 1;
15945 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015946 { // statement
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015947 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010015948 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015949 return NULL;
15950 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010015951 D(fprintf(stderr, "%*c> _loop1_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015952 asdl_seq* statement_var;
15953 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015954 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015955 )
15956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015957 _res = statement_var;
15958 if (_n == _children_capacity) {
15959 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015960 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15961 if (!_new_children) {
15962 p->error_indicator = 1;
15963 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015964 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015965 return NULL;
15966 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015967 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015969 _children[_n++] = _res;
15970 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015972 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010015973 D(fprintf(stderr, "%*c%s _loop1_11[%d-%d]: %s failed!\n", p->level, ' ',
15974 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015976 if (_n == 0 || p->error_indicator) {
15977 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015978 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015979 return NULL;
15980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015981 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15982 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015983 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015984 p->error_indicator = 1;
15985 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010015986 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015987 return NULL;
15988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015989 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15990 PyMem_Free(_children);
15991 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010015992 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015993 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015994}
15995
Guido van Rossumc001c092020-04-30 12:12:19 -070015996// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015997static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070015998_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015999{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016000 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016001 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016002 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016003 return NULL;
16004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016005 void *_res = NULL;
16006 int _mark = p->mark;
16007 int _start_mark = p->mark;
16008 void **_children = PyMem_Malloc(sizeof(void *));
16009 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016010 p->error_indicator = 1;
16011 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
16016 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016017 { // ';' small_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016018 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016019 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016020 return NULL;
16021 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016022 D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' small_stmt"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016023 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016024 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016025 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016026 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016027 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016028 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016029 )
16030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016031 _res = elem;
16032 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016033 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016034 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016035 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016036 return NULL;
16037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016038 if (_n == _children_capacity) {
16039 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016040 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16041 if (!_new_children) {
16042 p->error_indicator = 1;
16043 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016044 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016045 return NULL;
16046 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016047 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016049 _children[_n++] = _res;
16050 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016052 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016053 D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
16054 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' small_stmt"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016056 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16057 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016058 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016059 p->error_indicator = 1;
16060 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016061 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016062 return NULL;
16063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016064 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16065 PyMem_Free(_children);
16066 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016067 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016068 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016069}
16070
Guido van Rossumc001c092020-04-30 12:12:19 -070016071// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016072static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070016073_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016074{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016075 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016076 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016077 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016078 return NULL;
16079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016080 asdl_seq * _res = NULL;
16081 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016082 { // small_stmt _loop0_13
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016083 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016084 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016085 return NULL;
16086 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016087 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 +010016088 stmt_ty elem;
16089 asdl_seq * seq;
16090 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016091 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016092 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016093 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016094 )
16095 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016096 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 +010016097 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016098 goto done;
16099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016100 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016101 D(fprintf(stderr, "%*c%s _gather_12[%d-%d]: %s failed!\n", p->level, ' ',
16102 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "small_stmt _loop0_13"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016104 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016105 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016106 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016107 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016108}
16109
Guido van Rossumc001c092020-04-30 12:12:19 -070016110// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016111static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016112_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016113{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016114 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016115 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016116 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016117 return NULL;
16118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016119 void * _res = NULL;
16120 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016121 { // 'import'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016122 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016123 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016124 return NULL;
16125 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016126 D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016127 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016128 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016129 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016130 )
16131 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016132 D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016133 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016134 goto done;
16135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016136 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016137 D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ',
16138 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016139 }
16140 { // 'from'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016141 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016142 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016143 return NULL;
16144 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016145 D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016146 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016147 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016148 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016149 )
16150 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016151 D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016152 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016153 goto done;
16154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016155 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016156 D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ',
16157 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016159 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016160 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016161 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016162 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016163}
16164
Guido van Rossumc001c092020-04-30 12:12:19 -070016165// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016166static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016167_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016168{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016169 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016170 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016171 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016172 return NULL;
16173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016174 void * _res = NULL;
16175 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016176 { // 'def'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016177 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016178 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016179 return NULL;
16180 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016181 D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016182 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016183 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016184 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016185 )
16186 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016187 D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016188 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016189 goto done;
16190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016191 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016192 D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
16193 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016194 }
16195 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016196 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016197 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016198 return NULL;
16199 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016200 D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016201 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016202 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016203 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016204 )
16205 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016206 D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016207 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016208 goto done;
16209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016210 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016211 D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
16212 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016213 }
16214 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016215 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016216 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016217 return NULL;
16218 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016219 D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010016220 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016221 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016222 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016223 )
16224 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016225 D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016226 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016227 goto done;
16228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016229 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016230 D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
16231 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016233 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016234 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016235 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016236 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016237}
16238
Guido van Rossumc001c092020-04-30 12:12:19 -070016239// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016240static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016241_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016242{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016243 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016244 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016245 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016246 return NULL;
16247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016248 void * _res = NULL;
16249 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016250 { // 'class'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016251 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016252 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016253 return NULL;
16254 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016255 D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016256 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016257 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016258 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016259 )
16260 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016261 D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016262 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016263 goto done;
16264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016265 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016266 D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
16267 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016268 }
16269 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016270 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016271 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016272 return NULL;
16273 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016274 D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016275 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016276 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016277 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016278 )
16279 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016280 D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016281 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016282 goto done;
16283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016284 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016285 D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
16286 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016288 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016289 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016290 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016291 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016292}
16293
Guido van Rossumc001c092020-04-30 12:12:19 -070016294// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016295static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016296_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016297{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016298 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016299 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016300 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016301 return NULL;
16302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016303 void * _res = NULL;
16304 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016305 { // 'with'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016306 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016307 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016308 return NULL;
16309 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016310 D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016311 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016312 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016313 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016314 )
16315 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016316 D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016317 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016318 goto done;
16319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016320 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016321 D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
16322 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016323 }
16324 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016325 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016326 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016327 return NULL;
16328 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016329 D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010016330 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016331 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016332 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016333 )
16334 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016335 D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016336 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016337 goto done;
16338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016339 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016340 D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
16341 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016343 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016344 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016345 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016346 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016347}
16348
Guido van Rossumc001c092020-04-30 12:12:19 -070016349// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016350static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016351_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016352{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016353 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016354 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016355 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016356 return NULL;
16357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016358 void * _res = NULL;
16359 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016360 { // 'for'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016361 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016362 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016363 return NULL;
16364 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016365 D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016366 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016367 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016368 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016369 )
16370 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016371 D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016372 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016373 goto done;
16374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016375 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016376 D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ',
16377 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016378 }
16379 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016380 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016381 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016382 return NULL;
16383 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016384 D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010016385 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016386 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016387 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016388 )
16389 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016390 D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016391 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016392 goto done;
16393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016394 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016395 D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ',
16396 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016398 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016399 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016400 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016401 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016402}
16403
Guido van Rossumc001c092020-04-30 12:12:19 -070016404// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016405static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016406_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016407{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016408 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016409 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016410 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016411 return NULL;
16412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016413 void * _res = NULL;
16414 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016415 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016416 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016417 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016418 return NULL;
16419 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016420 D(fprintf(stderr, "%*c> _tmp_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016421 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016422 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016423 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016424 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016425 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016426 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016427 )
16428 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016429 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 +010016430 _res = d;
16431 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016432 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016433 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016434 return NULL;
16435 }
16436 goto done;
16437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016438 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016439 D(fprintf(stderr, "%*c%s _tmp_19[%d-%d]: %s failed!\n", p->level, ' ',
16440 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016442 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016443 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016444 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016445 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016446}
16447
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016448// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016449static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016450_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016451{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016452 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016453 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016454 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016455 return NULL;
16456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016457 void * _res = NULL;
16458 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016459 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016460 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016461 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016462 return NULL;
16463 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016464 D(fprintf(stderr, "%*c> _tmp_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016465 Token * _literal;
16466 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016467 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016468 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016469 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016470 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016471 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016472 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016473 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016474 )
16475 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016476 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 +010016477 _res = b;
16478 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016479 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016480 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016481 return NULL;
16482 }
16483 goto done;
16484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016485 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016486 D(fprintf(stderr, "%*c%s _tmp_20[%d-%d]: %s failed!\n", p->level, ' ',
16487 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016488 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016489 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016490 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016491 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016492 return NULL;
16493 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016494 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 +030016495 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016496 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030016497 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016498 )
16499 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016500 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 +030016501 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016502 goto done;
16503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016504 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016505 D(fprintf(stderr, "%*c%s _tmp_20[%d-%d]: %s failed!\n", p->level, ' ',
16506 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016508 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016509 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016510 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016511 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016512}
16513
Guido van Rossumc001c092020-04-30 12:12:19 -070016514// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016515static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070016516_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016517{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016518 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016519 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016520 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016521 return NULL;
16522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016523 void * _res = NULL;
16524 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016525 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016526 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016527 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016528 return NULL;
16529 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016530 D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016531 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016532 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016533 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016534 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016535 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016536 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016537 )
16538 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016539 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 +010016540 _res = d;
16541 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016542 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016543 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016544 return NULL;
16545 }
16546 goto done;
16547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016548 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016549 D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
16550 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016552 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016553 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016554 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016555 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016556}
16557
Guido van Rossumc001c092020-04-30 12:12:19 -070016558// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016559static asdl_seq *
16560_loop1_22_rule(Parser *p)
16561{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016562 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016563 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016564 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016565 return NULL;
16566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016567 void *_res = NULL;
16568 int _mark = p->mark;
16569 int _start_mark = p->mark;
16570 void **_children = PyMem_Malloc(sizeof(void *));
16571 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016572 p->error_indicator = 1;
16573 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016574 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016575 return NULL;
16576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016577 ssize_t _children_capacity = 1;
16578 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016579 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016580 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016581 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016582 return NULL;
16583 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016584 D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010016585 void *_tmp_138_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016586 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010016587 (_tmp_138_var = _tmp_138_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016588 )
16589 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010016590 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016591 if (_n == _children_capacity) {
16592 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016593 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16594 if (!_new_children) {
16595 p->error_indicator = 1;
16596 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016597 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016598 return NULL;
16599 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016600 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016602 _children[_n++] = _res;
16603 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016605 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016606 D(fprintf(stderr, "%*c%s _loop1_22[%d-%d]: %s failed!\n", p->level, ' ',
16607 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016609 if (_n == 0 || p->error_indicator) {
16610 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016611 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016612 return NULL;
16613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016614 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16615 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016616 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016617 p->error_indicator = 1;
16618 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016619 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016620 return NULL;
16621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016622 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16623 PyMem_Free(_children);
16624 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016625 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016626 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016627}
16628
Guido van Rossumc001c092020-04-30 12:12:19 -070016629// _tmp_23: yield_expr | star_expressions
16630static void *
16631_tmp_23_rule(Parser *p)
16632{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016633 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016634 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016635 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016636 return NULL;
16637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016638 void * _res = NULL;
16639 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016640 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016641 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016642 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016643 return NULL;
16644 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016645 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 -070016646 expr_ty yield_expr_var;
16647 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016648 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070016649 )
16650 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016651 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 +010016652 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070016653 goto done;
16654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016655 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016656 D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
16657 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016658 }
16659 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016660 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016661 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016662 return NULL;
16663 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016664 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 -070016665 expr_ty star_expressions_var;
16666 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016667 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070016668 )
16669 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016670 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 +010016671 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070016672 goto done;
16673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016674 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016675 D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
16676 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016678 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016679 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016680 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016681 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016682}
16683
16684// _tmp_24: yield_expr | star_expressions
16685static void *
16686_tmp_24_rule(Parser *p)
16687{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016688 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016689 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016690 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016691 return NULL;
16692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016693 void * _res = NULL;
16694 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016695 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016696 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016697 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016698 return NULL;
16699 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016700 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 -070016701 expr_ty yield_expr_var;
16702 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016703 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070016704 )
16705 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016706 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 +010016707 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070016708 goto done;
16709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016710 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016711 D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ',
16712 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016713 }
16714 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016715 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016716 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016717 return NULL;
16718 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016719 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 -070016720 expr_ty star_expressions_var;
16721 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016722 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070016723 )
16724 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016725 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 +010016726 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070016727 goto done;
16728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016729 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016730 D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ',
16731 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016733 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016734 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016735 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016736 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016737}
16738
16739// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016740static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070016741_loop0_26_rule(Parser *p)
16742{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016743 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016744 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016745 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016746 return NULL;
16747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016748 void *_res = NULL;
16749 int _mark = p->mark;
16750 int _start_mark = p->mark;
16751 void **_children = PyMem_Malloc(sizeof(void *));
16752 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016753 p->error_indicator = 1;
16754 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016755 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016756 return NULL;
16757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016758 ssize_t _children_capacity = 1;
16759 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016760 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016761 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016762 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016763 return NULL;
16764 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016765 D(fprintf(stderr, "%*c> _loop0_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016766 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016767 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016768 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016769 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016770 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016771 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070016772 )
16773 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016774 _res = elem;
16775 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016776 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016777 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016778 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016779 return NULL;
16780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016781 if (_n == _children_capacity) {
16782 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016783 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16784 if (!_new_children) {
16785 p->error_indicator = 1;
16786 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016787 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016788 return NULL;
16789 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016790 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070016791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016792 _children[_n++] = _res;
16793 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016795 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016796 D(fprintf(stderr, "%*c%s _loop0_26[%d-%d]: %s failed!\n", p->level, ' ',
16797 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016799 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16800 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016801 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016802 p->error_indicator = 1;
16803 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016804 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016805 return NULL;
16806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016807 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16808 PyMem_Free(_children);
16809 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016810 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016811 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016812}
16813
16814// _gather_25: NAME _loop0_26
16815static asdl_seq *
16816_gather_25_rule(Parser *p)
16817{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016818 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016819 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016820 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016821 return NULL;
16822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016823 asdl_seq * _res = NULL;
16824 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016825 { // NAME _loop0_26
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016826 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016827 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016828 return NULL;
16829 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016830 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 -070016831 expr_ty elem;
16832 asdl_seq * seq;
16833 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016834 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070016835 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016836 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070016837 )
16838 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016839 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 +010016840 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016841 goto done;
16842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016843 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016844 D(fprintf(stderr, "%*c%s _gather_25[%d-%d]: %s failed!\n", p->level, ' ',
16845 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_26"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016847 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016848 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016849 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016850 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016851}
16852
16853// _loop0_28: ',' NAME
16854static asdl_seq *
16855_loop0_28_rule(Parser *p)
16856{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016857 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016858 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016859 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016860 return NULL;
16861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016862 void *_res = NULL;
16863 int _mark = p->mark;
16864 int _start_mark = p->mark;
16865 void **_children = PyMem_Malloc(sizeof(void *));
16866 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016867 p->error_indicator = 1;
16868 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016869 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016870 return NULL;
16871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016872 ssize_t _children_capacity = 1;
16873 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016874 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016875 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016876 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016877 return NULL;
16878 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016879 D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016880 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016881 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016882 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016883 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016884 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016885 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070016886 )
16887 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016888 _res = elem;
16889 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016890 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016891 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016892 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016893 return NULL;
16894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016895 if (_n == _children_capacity) {
16896 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016897 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16898 if (!_new_children) {
16899 p->error_indicator = 1;
16900 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016901 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016902 return NULL;
16903 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016904 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070016905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016906 _children[_n++] = _res;
16907 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016909 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016910 D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
16911 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016913 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16914 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016915 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016916 p->error_indicator = 1;
16917 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010016918 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016919 return NULL;
16920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016921 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16922 PyMem_Free(_children);
16923 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010016924 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016925 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016926}
16927
16928// _gather_27: NAME _loop0_28
16929static asdl_seq *
16930_gather_27_rule(Parser *p)
16931{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016932 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016933 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016934 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016935 return NULL;
16936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016937 asdl_seq * _res = NULL;
16938 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016939 { // NAME _loop0_28
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016940 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016941 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016942 return NULL;
16943 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016944 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 -070016945 expr_ty elem;
16946 asdl_seq * seq;
16947 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016948 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070016949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016950 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070016951 )
16952 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016953 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 +010016954 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016955 goto done;
16956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016957 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016958 D(fprintf(stderr, "%*c%s _gather_27[%d-%d]: %s failed!\n", p->level, ' ',
16959 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_28"));
Guido van Rossumc001c092020-04-30 12:12:19 -070016960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016961 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016962 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010016963 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016964 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016965}
16966
16967// _tmp_29: ',' expression
16968static void *
16969_tmp_29_rule(Parser *p)
16970{
Pablo Galindo800a35c62020-05-25 18:38:45 +010016971 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070016972 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016973 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016974 return NULL;
16975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016976 void * _res = NULL;
16977 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016978 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016979 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016980 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016981 return NULL;
16982 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010016983 D(fprintf(stderr, "%*c> _tmp_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016984 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016985 expr_ty z;
16986 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016987 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016988 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016989 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070016990 )
16991 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010016992 D(fprintf(stderr, "%*c+ _tmp_29[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016993 _res = z;
16994 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016995 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010016996 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070016997 return NULL;
16998 }
16999 goto done;
17000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017001 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017002 D(fprintf(stderr, "%*c%s _tmp_29[%d-%d]: %s failed!\n", p->level, ' ',
17003 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Guido van Rossumc001c092020-04-30 12:12:19 -070017004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017005 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017006 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017007 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017008 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017009}
17010
17011// _loop0_30: ('.' | '...')
17012static asdl_seq *
17013_loop0_30_rule(Parser *p)
17014{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017015 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070017016 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017017 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017018 return NULL;
17019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017020 void *_res = NULL;
17021 int _mark = p->mark;
17022 int _start_mark = p->mark;
17023 void **_children = PyMem_Malloc(sizeof(void *));
17024 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017025 p->error_indicator = 1;
17026 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017027 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017028 return NULL;
17029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017030 ssize_t _children_capacity = 1;
17031 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017032 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017033 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017034 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017035 return NULL;
17036 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017037 D(fprintf(stderr, "%*c> _loop0_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010017038 void *_tmp_139_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070017039 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010017040 (_tmp_139_var = _tmp_139_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070017041 )
17042 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010017043 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017044 if (_n == _children_capacity) {
17045 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017046 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17047 if (!_new_children) {
17048 p->error_indicator = 1;
17049 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017050 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017051 return NULL;
17052 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017053 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017055 _children[_n++] = _res;
17056 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017058 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017059 D(fprintf(stderr, "%*c%s _loop0_30[%d-%d]: %s failed!\n", p->level, ' ',
17060 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
Guido van Rossumc001c092020-04-30 12:12:19 -070017061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017062 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17063 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017064 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017065 p->error_indicator = 1;
17066 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017067 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017068 return NULL;
17069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017070 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17071 PyMem_Free(_children);
17072 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017073 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017074 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017075}
17076
17077// _loop1_31: ('.' | '...')
17078static asdl_seq *
17079_loop1_31_rule(Parser *p)
17080{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017081 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070017082 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017083 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017084 return NULL;
17085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017086 void *_res = NULL;
17087 int _mark = p->mark;
17088 int _start_mark = p->mark;
17089 void **_children = PyMem_Malloc(sizeof(void *));
17090 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017091 p->error_indicator = 1;
17092 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017093 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017094 return NULL;
17095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017096 ssize_t _children_capacity = 1;
17097 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017098 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017099 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017100 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017101 return NULL;
17102 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017103 D(fprintf(stderr, "%*c> _loop1_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010017104 void *_tmp_140_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070017105 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010017106 (_tmp_140_var = _tmp_140_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070017107 )
17108 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010017109 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017110 if (_n == _children_capacity) {
17111 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017112 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17113 if (!_new_children) {
17114 p->error_indicator = 1;
17115 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017116 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017117 return NULL;
17118 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017119 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017121 _children[_n++] = _res;
17122 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017124 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017125 D(fprintf(stderr, "%*c%s _loop1_31[%d-%d]: %s failed!\n", p->level, ' ',
17126 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
Guido van Rossumc001c092020-04-30 12:12:19 -070017127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017128 if (_n == 0 || p->error_indicator) {
17129 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017130 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017131 return NULL;
17132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017133 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17134 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017135 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017136 p->error_indicator = 1;
17137 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017138 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070017139 return NULL;
17140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017141 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17142 PyMem_Free(_children);
17143 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017144 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017145 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017146}
17147
17148// _loop0_33: ',' import_from_as_name
17149static asdl_seq *
17150_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017151{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017152 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017153 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017154 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017155 return NULL;
17156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017157 void *_res = NULL;
17158 int _mark = p->mark;
17159 int _start_mark = p->mark;
17160 void **_children = PyMem_Malloc(sizeof(void *));
17161 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017162 p->error_indicator = 1;
17163 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017164 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017165 return NULL;
17166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017167 ssize_t _children_capacity = 1;
17168 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017169 { // ',' import_from_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017170 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017171 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017172 return NULL;
17173 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017174 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 +010017175 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017176 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017177 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017178 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017179 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017180 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017181 )
17182 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017183 _res = elem;
17184 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017185 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017186 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017187 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017188 return NULL;
17189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017190 if (_n == _children_capacity) {
17191 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017192 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17193 if (!_new_children) {
17194 p->error_indicator = 1;
17195 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017196 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017197 return NULL;
17198 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017199 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017201 _children[_n++] = _res;
17202 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017204 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017205 D(fprintf(stderr, "%*c%s _loop0_33[%d-%d]: %s failed!\n", p->level, ' ',
17206 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017208 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17209 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017210 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017211 p->error_indicator = 1;
17212 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017213 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017214 return NULL;
17215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017216 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17217 PyMem_Free(_children);
17218 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017219 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017220 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017221}
17222
Guido van Rossumc001c092020-04-30 12:12:19 -070017223// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017224static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017225_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017226{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017227 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017228 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017229 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017230 return NULL;
17231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017232 asdl_seq * _res = NULL;
17233 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017234 { // import_from_as_name _loop0_33
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017235 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017236 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017237 return NULL;
17238 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017239 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 +010017240 alias_ty elem;
17241 asdl_seq * seq;
17242 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017243 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017244 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017245 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017246 )
17247 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017248 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 +010017249 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017250 goto done;
17251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017252 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017253 D(fprintf(stderr, "%*c%s _gather_32[%d-%d]: %s failed!\n", p->level, ' ',
17254 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_33"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017256 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017257 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017258 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017259 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017260}
17261
Guido van Rossumc001c092020-04-30 12:12:19 -070017262// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017263static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070017264_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017265{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017266 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017267 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017268 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017269 return NULL;
17270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017271 void * _res = NULL;
17272 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017273 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017274 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017275 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017276 return NULL;
17277 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017278 D(fprintf(stderr, "%*c> _tmp_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017279 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017280 expr_ty z;
17281 if (
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030017282 (_keyword = _PyPegen_expect_token(p, 530)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017284 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017285 )
17286 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017287 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 +010017288 _res = z;
17289 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017290 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017291 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017292 return NULL;
17293 }
17294 goto done;
17295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017296 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017297 D(fprintf(stderr, "%*c%s _tmp_34[%d-%d]: %s failed!\n", p->level, ' ',
17298 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017300 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017301 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017302 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017303 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017304}
17305
Guido van Rossumc001c092020-04-30 12:12:19 -070017306// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017307static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017308_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017309{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017310 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017311 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017312 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017313 return NULL;
17314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017315 void *_res = NULL;
17316 int _mark = p->mark;
17317 int _start_mark = p->mark;
17318 void **_children = PyMem_Malloc(sizeof(void *));
17319 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017320 p->error_indicator = 1;
17321 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017322 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017323 return NULL;
17324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017325 ssize_t _children_capacity = 1;
17326 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017327 { // ',' dotted_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017328 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017329 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017330 return NULL;
17331 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017332 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 +010017333 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017334 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017335 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017336 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017337 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017338 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017339 )
17340 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017341 _res = elem;
17342 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017343 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017344 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017345 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017346 return NULL;
17347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017348 if (_n == _children_capacity) {
17349 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017350 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17351 if (!_new_children) {
17352 p->error_indicator = 1;
17353 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017354 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017355 return NULL;
17356 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017357 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017359 _children[_n++] = _res;
17360 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017362 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017363 D(fprintf(stderr, "%*c%s _loop0_36[%d-%d]: %s failed!\n", p->level, ' ',
17364 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017366 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17367 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017368 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017369 p->error_indicator = 1;
17370 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017371 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017372 return NULL;
17373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017374 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17375 PyMem_Free(_children);
17376 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017377 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017378 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017379}
17380
Guido van Rossumc001c092020-04-30 12:12:19 -070017381// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017382static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017383_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017384{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017385 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017386 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017387 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017388 return NULL;
17389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017390 asdl_seq * _res = NULL;
17391 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017392 { // dotted_as_name _loop0_36
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017393 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017394 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017395 return NULL;
17396 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017397 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 +010017398 alias_ty elem;
17399 asdl_seq * seq;
17400 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017401 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017402 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017403 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017404 )
17405 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017406 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 +010017407 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017408 goto done;
17409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017410 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017411 D(fprintf(stderr, "%*c%s _gather_35[%d-%d]: %s failed!\n", p->level, ' ',
17412 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_36"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017414 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017415 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017416 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017417 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017418}
17419
Guido van Rossumc001c092020-04-30 12:12:19 -070017420// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017421static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070017422_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017423{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017424 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017425 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017426 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017427 return NULL;
17428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017429 void * _res = NULL;
17430 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017431 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017432 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017433 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017434 return NULL;
17435 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017436 D(fprintf(stderr, "%*c> _tmp_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017437 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017438 expr_ty z;
17439 if (
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030017440 (_keyword = _PyPegen_expect_token(p, 530)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017441 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017442 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017443 )
17444 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017445 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 +010017446 _res = z;
17447 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017448 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017449 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017450 return NULL;
17451 }
17452 goto done;
17453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017454 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017455 D(fprintf(stderr, "%*c%s _tmp_37[%d-%d]: %s failed!\n", p->level, ' ',
17456 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017458 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017459 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017460 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017461 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017462}
17463
Guido van Rossumc001c092020-04-30 12:12:19 -070017464// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017465static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017466_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017467{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017468 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017469 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017470 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017471 return NULL;
17472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017473 void *_res = NULL;
17474 int _mark = p->mark;
17475 int _start_mark = p->mark;
17476 void **_children = PyMem_Malloc(sizeof(void *));
17477 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017478 p->error_indicator = 1;
17479 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017480 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017481 return NULL;
17482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017483 ssize_t _children_capacity = 1;
17484 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017485 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017486 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017487 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017488 return NULL;
17489 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017490 D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017491 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017492 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017493 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017494 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017495 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017496 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017497 )
17498 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017499 _res = elem;
17500 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017501 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017502 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017503 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017504 return NULL;
17505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017506 if (_n == _children_capacity) {
17507 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017508 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17509 if (!_new_children) {
17510 p->error_indicator = 1;
17511 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017512 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017513 return NULL;
17514 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017515 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017517 _children[_n++] = _res;
17518 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017520 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017521 D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ',
17522 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017524 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17525 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017526 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017527 p->error_indicator = 1;
17528 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017529 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017530 return NULL;
17531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017532 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17533 PyMem_Free(_children);
17534 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017535 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017536 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017537}
17538
Guido van Rossumc001c092020-04-30 12:12:19 -070017539// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017540static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017541_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017542{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017543 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017544 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017545 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017546 return NULL;
17547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017548 asdl_seq * _res = NULL;
17549 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017550 { // with_item _loop0_39
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017551 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017552 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017553 return NULL;
17554 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017555 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 +010017556 withitem_ty elem;
17557 asdl_seq * seq;
17558 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017559 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017560 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017561 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017562 )
17563 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017564 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 +010017565 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017566 goto done;
17567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017568 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017569 D(fprintf(stderr, "%*c%s _gather_38[%d-%d]: %s failed!\n", p->level, ' ',
17570 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_39"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017572 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017573 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017574 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017575 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017576}
17577
Guido van Rossumc001c092020-04-30 12:12:19 -070017578// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017579static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017580_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017581{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017582 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017583 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017584 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017585 return NULL;
17586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017587 void *_res = NULL;
17588 int _mark = p->mark;
17589 int _start_mark = p->mark;
17590 void **_children = PyMem_Malloc(sizeof(void *));
17591 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017592 p->error_indicator = 1;
17593 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017594 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017595 return NULL;
17596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017597 ssize_t _children_capacity = 1;
17598 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017599 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017600 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017601 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017602 return NULL;
17603 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017604 D(fprintf(stderr, "%*c> _loop0_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017605 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017606 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017607 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017608 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017609 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017610 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017611 )
17612 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017613 _res = elem;
17614 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017615 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017616 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017617 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017618 return NULL;
17619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017620 if (_n == _children_capacity) {
17621 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017622 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17623 if (!_new_children) {
17624 p->error_indicator = 1;
17625 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017626 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017627 return NULL;
17628 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017629 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017631 _children[_n++] = _res;
17632 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017634 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017635 D(fprintf(stderr, "%*c%s _loop0_41[%d-%d]: %s failed!\n", p->level, ' ',
17636 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017638 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17639 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017640 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017641 p->error_indicator = 1;
17642 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017643 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017644 return NULL;
17645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017646 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17647 PyMem_Free(_children);
17648 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017649 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017650 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017651}
17652
Guido van Rossumc001c092020-04-30 12:12:19 -070017653// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017654static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070017655_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017656{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017657 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017658 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017659 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017660 return NULL;
17661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017662 asdl_seq * _res = NULL;
17663 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017664 { // with_item _loop0_41
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017665 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017666 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017667 return NULL;
17668 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017669 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 +010017670 withitem_ty elem;
17671 asdl_seq * seq;
17672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017673 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017675 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017676 )
17677 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017678 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 +010017679 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017680 goto done;
17681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017682 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017683 D(fprintf(stderr, "%*c%s _gather_40[%d-%d]: %s failed!\n", p->level, ' ',
17684 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_41"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017686 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017687 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017688 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017689 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017690}
17691
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017692// _loop0_43: ',' with_item
17693static asdl_seq *
17694_loop0_43_rule(Parser *p)
17695{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017696 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017697 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017698 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017699 return NULL;
17700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017701 void *_res = NULL;
17702 int _mark = p->mark;
17703 int _start_mark = p->mark;
17704 void **_children = PyMem_Malloc(sizeof(void *));
17705 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017706 p->error_indicator = 1;
17707 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017708 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017709 return NULL;
17710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017711 ssize_t _children_capacity = 1;
17712 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017713 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017714 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017715 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017716 return NULL;
17717 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017718 D(fprintf(stderr, "%*c> _loop0_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017719 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017720 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017721 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017722 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017723 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017724 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017725 )
17726 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017727 _res = elem;
17728 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017729 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017730 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017731 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017732 return NULL;
17733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017734 if (_n == _children_capacity) {
17735 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017736 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17737 if (!_new_children) {
17738 p->error_indicator = 1;
17739 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017740 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017741 return NULL;
17742 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017743 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017745 _children[_n++] = _res;
17746 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017748 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017749 D(fprintf(stderr, "%*c%s _loop0_43[%d-%d]: %s failed!\n", p->level, ' ',
17750 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017752 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17753 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017754 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017755 p->error_indicator = 1;
17756 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017757 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017758 return NULL;
17759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017760 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17761 PyMem_Free(_children);
17762 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017763 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017764 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017765}
17766
17767// _gather_42: with_item _loop0_43
17768static asdl_seq *
17769_gather_42_rule(Parser *p)
17770{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017771 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017772 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017773 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017774 return NULL;
17775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017776 asdl_seq * _res = NULL;
17777 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017778 { // with_item _loop0_43
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017779 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017780 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017781 return NULL;
17782 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017783 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 +030017784 withitem_ty elem;
17785 asdl_seq * seq;
17786 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017787 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017788 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017789 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017790 )
17791 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017792 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 +010017793 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017794 goto done;
17795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017796 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017797 D(fprintf(stderr, "%*c%s _gather_42[%d-%d]: %s failed!\n", p->level, ' ',
17798 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_43"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017800 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017801 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017802 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017803 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017804}
17805
17806// _loop0_45: ',' with_item
17807static asdl_seq *
17808_loop0_45_rule(Parser *p)
17809{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017810 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017811 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017812 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017813 return NULL;
17814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017815 void *_res = NULL;
17816 int _mark = p->mark;
17817 int _start_mark = p->mark;
17818 void **_children = PyMem_Malloc(sizeof(void *));
17819 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017820 p->error_indicator = 1;
17821 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017822 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017823 return NULL;
17824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017825 ssize_t _children_capacity = 1;
17826 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017827 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017828 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017829 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017830 return NULL;
17831 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017832 D(fprintf(stderr, "%*c> _loop0_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017833 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017834 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017835 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017836 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017837 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017838 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017839 )
17840 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017841 _res = elem;
17842 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017843 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017844 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017845 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017846 return NULL;
17847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017848 if (_n == _children_capacity) {
17849 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017850 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17851 if (!_new_children) {
17852 p->error_indicator = 1;
17853 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017854 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017855 return NULL;
17856 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017857 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017859 _children[_n++] = _res;
17860 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017862 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017863 D(fprintf(stderr, "%*c%s _loop0_45[%d-%d]: %s failed!\n", p->level, ' ',
17864 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017866 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17867 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017868 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017869 p->error_indicator = 1;
17870 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017871 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017872 return NULL;
17873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017874 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17875 PyMem_Free(_children);
17876 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010017877 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017878 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017879}
17880
17881// _gather_44: with_item _loop0_45
17882static asdl_seq *
17883_gather_44_rule(Parser *p)
17884{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017885 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017886 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017887 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017888 return NULL;
17889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017890 asdl_seq * _res = NULL;
17891 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017892 { // with_item _loop0_45
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017893 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017894 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017895 return NULL;
17896 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017897 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 +030017898 withitem_ty elem;
17899 asdl_seq * seq;
17900 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017901 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017902 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017903 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017904 )
17905 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017906 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 +010017907 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017908 goto done;
17909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017910 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017911 D(fprintf(stderr, "%*c%s _gather_44[%d-%d]: %s failed!\n", p->level, ' ',
17912 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_45"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017914 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017915 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017916 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017917 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017918}
17919
17920// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017921static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017922_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017923{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017924 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017925 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017926 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017927 return NULL;
17928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017929 void * _res = NULL;
17930 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017931 { // 'as' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017932 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017933 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017934 return NULL;
17935 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017936 D(fprintf(stderr, "%*c> _tmp_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017937 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017938 expr_ty t;
17939 if (
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030017940 (_keyword = _PyPegen_expect_token(p, 530)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017942 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017943 )
17944 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017945 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 +010017946 _res = t;
17947 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017948 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017949 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017950 return NULL;
17951 }
17952 goto done;
17953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017954 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010017955 D(fprintf(stderr, "%*c%s _tmp_46[%d-%d]: %s failed!\n", p->level, ' ',
17956 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017958 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017959 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010017960 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017961 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017962}
17963
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017964// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017965static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017966_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017967{
Pablo Galindo800a35c62020-05-25 18:38:45 +010017968 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017969 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017970 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017971 return NULL;
17972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017973 void *_res = NULL;
17974 int _mark = p->mark;
17975 int _start_mark = p->mark;
17976 void **_children = PyMem_Malloc(sizeof(void *));
17977 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017978 p->error_indicator = 1;
17979 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010017980 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017981 return NULL;
17982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017983 ssize_t _children_capacity = 1;
17984 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017985 { // except_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017986 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010017987 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017988 return NULL;
17989 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010017990 D(fprintf(stderr, "%*c> _loop1_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017991 excepthandler_ty except_block_var;
17992 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017993 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017994 )
17995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017996 _res = except_block_var;
17997 if (_n == _children_capacity) {
17998 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017999 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18000 if (!_new_children) {
18001 p->error_indicator = 1;
18002 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018003 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018004 return NULL;
18005 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018006 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018008 _children[_n++] = _res;
18009 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018011 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018012 D(fprintf(stderr, "%*c%s _loop1_47[%d-%d]: %s failed!\n", p->level, ' ',
18013 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018015 if (_n == 0 || p->error_indicator) {
18016 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018017 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018018 return NULL;
18019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018020 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18021 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018022 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018023 p->error_indicator = 1;
18024 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018025 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018026 return NULL;
18027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018028 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18029 PyMem_Free(_children);
18030 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018031 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018032 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018033}
18034
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030018035// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018036static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018037_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018038{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018039 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018040 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018041 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018042 return NULL;
18043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018044 void * _res = NULL;
18045 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030018046 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018047 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018048 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018049 return NULL;
18050 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018051 D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018052 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018053 expr_ty z;
18054 if (
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030018055 (_keyword = _PyPegen_expect_token(p, 530)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018056 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030018057 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018058 )
18059 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018060 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 +010018061 _res = z;
18062 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018063 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018064 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018065 return NULL;
18066 }
18067 goto done;
18068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018069 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018070 D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
18071 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018073 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018074 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018075 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018076 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018077}
18078
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018079// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018080static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018081_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018082{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018083 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018084 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018085 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018086 return NULL;
18087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018088 void * _res = NULL;
18089 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018090 { // 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018091 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018092 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018093 return NULL;
18094 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018095 D(fprintf(stderr, "%*c> _tmp_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018096 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018097 expr_ty z;
18098 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018099 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018100 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018101 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018102 )
18103 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018104 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 +010018105 _res = z;
18106 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018107 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018108 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018109 return NULL;
18110 }
18111 goto done;
18112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018113 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018114 D(fprintf(stderr, "%*c%s _tmp_49[%d-%d]: %s failed!\n", p->level, ' ',
18115 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018117 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018118 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018119 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018120 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018121}
18122
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018123// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018124static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018125_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018126{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018127 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018128 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018129 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018130 return NULL;
18131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018132 void * _res = NULL;
18133 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018134 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018135 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018136 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018137 return NULL;
18138 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018139 D(fprintf(stderr, "%*c> _tmp_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018140 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070018141 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018142 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018143 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018144 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018145 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018146 )
18147 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018148 D(fprintf(stderr, "%*c+ _tmp_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018149 _res = z;
18150 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018151 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018152 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018153 return NULL;
18154 }
18155 goto done;
18156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018157 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018158 D(fprintf(stderr, "%*c%s _tmp_50[%d-%d]: %s failed!\n", p->level, ' ',
18159 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018161 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018162 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018163 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018164 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018165}
18166
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018167// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070018168static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018169_tmp_51_rule(Parser *p)
18170{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018171 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018172 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018173 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018174 return NULL;
18175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018176 void * _res = NULL;
18177 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018178 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018179 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018180 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018181 return NULL;
18182 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018183 D(fprintf(stderr, "%*c> _tmp_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018184 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018185 expr_ty z;
18186 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018187 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018188 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018189 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018190 )
18191 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018192 D(fprintf(stderr, "%*c+ _tmp_51[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018193 _res = z;
18194 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018195 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018196 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018197 return NULL;
18198 }
18199 goto done;
18200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018201 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018202 D(fprintf(stderr, "%*c%s _tmp_51[%d-%d]: %s failed!\n", p->level, ' ',
18203 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018205 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018206 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018207 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018208 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018209}
18210
18211// _tmp_52: NEWLINE INDENT
18212static void *
18213_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018214{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018215 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018216 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018217 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018218 return NULL;
18219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018220 void * _res = NULL;
18221 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018222 { // NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018223 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018224 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018225 return NULL;
18226 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018227 D(fprintf(stderr, "%*c> _tmp_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010018228 Token * indent_var;
18229 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070018230 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018231 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070018232 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018233 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070018234 )
18235 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018236 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 +010018237 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070018238 goto done;
18239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018240 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018241 D(fprintf(stderr, "%*c%s _tmp_52[%d-%d]: %s failed!\n", p->level, ' ',
18242 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018244 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070018245 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010018246 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018247 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070018248}
18249
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018250// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018251static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018252_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018253{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018254 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018255 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018256 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018257 return NULL;
18258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018259 void *_res = NULL;
18260 int _mark = p->mark;
18261 int _start_mark = p->mark;
18262 void **_children = PyMem_Malloc(sizeof(void *));
18263 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018264 p->error_indicator = 1;
18265 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018266 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018267 return NULL;
18268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018269 ssize_t _children_capacity = 1;
18270 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018271 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018272 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018273 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018274 return NULL;
18275 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018276 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 -070018277 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018278 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018279 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018280 )
18281 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018282 _res = param_no_default_var;
18283 if (_n == _children_capacity) {
18284 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018285 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18286 if (!_new_children) {
18287 p->error_indicator = 1;
18288 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018289 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018290 return NULL;
18291 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018292 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018294 _children[_n++] = _res;
18295 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018297 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018298 D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
18299 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018301 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18302 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018303 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018304 p->error_indicator = 1;
18305 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018306 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018307 return NULL;
18308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018309 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18310 PyMem_Free(_children);
18311 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018312 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018313 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018314}
18315
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018316// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018317static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018318_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018319{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018320 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018321 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018322 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018323 return NULL;
18324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018325 void *_res = NULL;
18326 int _mark = p->mark;
18327 int _start_mark = p->mark;
18328 void **_children = PyMem_Malloc(sizeof(void *));
18329 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018330 p->error_indicator = 1;
18331 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018332 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018333 return NULL;
18334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018335 ssize_t _children_capacity = 1;
18336 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018337 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018338 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018339 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018340 return NULL;
18341 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018342 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 -070018343 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018344 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018345 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018346 )
18347 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018348 _res = param_with_default_var;
18349 if (_n == _children_capacity) {
18350 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018351 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18352 if (!_new_children) {
18353 p->error_indicator = 1;
18354 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018355 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018356 return NULL;
18357 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018358 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018360 _children[_n++] = _res;
18361 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018363 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018364 D(fprintf(stderr, "%*c%s _loop0_54[%d-%d]: %s failed!\n", p->level, ' ',
18365 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018367 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18368 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018369 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018370 p->error_indicator = 1;
18371 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018372 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018373 return NULL;
18374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018375 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18376 PyMem_Free(_children);
18377 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018378 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018379 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018380}
18381
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018382// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018383static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018384_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018385{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018386 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018387 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018388 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018389 return NULL;
18390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018391 void *_res = NULL;
18392 int _mark = p->mark;
18393 int _start_mark = p->mark;
18394 void **_children = PyMem_Malloc(sizeof(void *));
18395 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018396 p->error_indicator = 1;
18397 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018398 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018399 return NULL;
18400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018401 ssize_t _children_capacity = 1;
18402 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018403 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018404 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018405 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018406 return NULL;
18407 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018408 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 -070018409 NameDefaultPair* param_with_default_var;
18410 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018411 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018412 )
18413 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018414 _res = param_with_default_var;
18415 if (_n == _children_capacity) {
18416 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018417 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18418 if (!_new_children) {
18419 p->error_indicator = 1;
18420 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018421 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018422 return NULL;
18423 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018424 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018426 _children[_n++] = _res;
18427 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018429 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018430 D(fprintf(stderr, "%*c%s _loop0_55[%d-%d]: %s failed!\n", p->level, ' ',
18431 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018433 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18434 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018435 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018436 p->error_indicator = 1;
18437 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018438 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018439 return NULL;
18440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018441 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18442 PyMem_Free(_children);
18443 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018444 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018445 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018446}
18447
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018448// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018449static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018450_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018451{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018452 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018453 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018454 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018455 return NULL;
18456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018457 void *_res = NULL;
18458 int _mark = p->mark;
18459 int _start_mark = p->mark;
18460 void **_children = PyMem_Malloc(sizeof(void *));
18461 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018462 p->error_indicator = 1;
18463 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018464 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018465 return NULL;
18466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018467 ssize_t _children_capacity = 1;
18468 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018469 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018470 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018471 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018472 return NULL;
18473 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018474 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 -070018475 arg_ty param_no_default_var;
18476 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018477 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018478 )
18479 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018480 _res = param_no_default_var;
18481 if (_n == _children_capacity) {
18482 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018483 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18484 if (!_new_children) {
18485 p->error_indicator = 1;
18486 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018487 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018488 return NULL;
18489 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018490 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018492 _children[_n++] = _res;
18493 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018495 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018496 D(fprintf(stderr, "%*c%s _loop1_56[%d-%d]: %s failed!\n", p->level, ' ',
18497 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018499 if (_n == 0 || p->error_indicator) {
18500 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018501 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018502 return NULL;
18503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018504 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18505 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018506 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018507 p->error_indicator = 1;
18508 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018509 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018510 return NULL;
18511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018512 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18513 PyMem_Free(_children);
18514 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018515 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018516 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018517}
18518
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018519// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018520static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018521_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018522{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018523 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018524 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018525 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018526 return NULL;
18527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018528 void *_res = NULL;
18529 int _mark = p->mark;
18530 int _start_mark = p->mark;
18531 void **_children = PyMem_Malloc(sizeof(void *));
18532 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018533 p->error_indicator = 1;
18534 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
18539 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018540 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018541 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018542 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018543 return NULL;
18544 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018545 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 -070018546 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018547 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018548 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018549 )
18550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018551 _res = param_with_default_var;
18552 if (_n == _children_capacity) {
18553 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018554 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18555 if (!_new_children) {
18556 p->error_indicator = 1;
18557 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018558 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018559 return NULL;
18560 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018561 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018563 _children[_n++] = _res;
18564 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018566 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018567 D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
18568 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018570 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18571 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018572 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018573 p->error_indicator = 1;
18574 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018575 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018576 return NULL;
18577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018578 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18579 PyMem_Free(_children);
18580 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018581 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018582 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018583}
18584
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018585// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018586static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018587_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018588{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018589 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018590 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018591 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018592 return NULL;
18593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018594 void *_res = NULL;
18595 int _mark = p->mark;
18596 int _start_mark = p->mark;
18597 void **_children = PyMem_Malloc(sizeof(void *));
18598 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018599 p->error_indicator = 1;
18600 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018601 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018602 return NULL;
18603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018604 ssize_t _children_capacity = 1;
18605 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018606 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018607 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018608 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018609 return NULL;
18610 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018611 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 -070018612 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018613 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018614 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018615 )
18616 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018617 _res = param_with_default_var;
18618 if (_n == _children_capacity) {
18619 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018620 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18621 if (!_new_children) {
18622 p->error_indicator = 1;
18623 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018624 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018625 return NULL;
18626 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018627 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018629 _children[_n++] = _res;
18630 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018632 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018633 D(fprintf(stderr, "%*c%s _loop1_58[%d-%d]: %s failed!\n", p->level, ' ',
18634 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018636 if (_n == 0 || p->error_indicator) {
18637 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018638 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018639 return NULL;
18640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018641 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18642 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018643 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018644 p->error_indicator = 1;
18645 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018646 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018647 return NULL;
18648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018649 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18650 PyMem_Free(_children);
18651 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018652 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018653 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018654}
18655
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018656// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018657static asdl_seq *
18658_loop1_59_rule(Parser *p)
18659{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018660 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018661 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018662 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018663 return NULL;
18664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018665 void *_res = NULL;
18666 int _mark = p->mark;
18667 int _start_mark = p->mark;
18668 void **_children = PyMem_Malloc(sizeof(void *));
18669 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018670 p->error_indicator = 1;
18671 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
18676 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018677 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018678 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018679 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018680 return NULL;
18681 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018682 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 +030018683 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070018684 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018685 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018686 )
18687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018688 _res = param_no_default_var;
18689 if (_n == _children_capacity) {
18690 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018691 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18692 if (!_new_children) {
18693 p->error_indicator = 1;
18694 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018695 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018696 return NULL;
18697 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018698 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018700 _children[_n++] = _res;
18701 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018703 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018704 D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
18705 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018707 if (_n == 0 || p->error_indicator) {
18708 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018709 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018710 return NULL;
18711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018712 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18713 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018714 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018715 p->error_indicator = 1;
18716 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018717 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018718 return NULL;
18719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018720 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18721 PyMem_Free(_children);
18722 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018723 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018724 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018725}
18726
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018727// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018728static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018729_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018730{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018731 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018732 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018733 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018734 return NULL;
18735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018736 void *_res = NULL;
18737 int _mark = p->mark;
18738 int _start_mark = p->mark;
18739 void **_children = PyMem_Malloc(sizeof(void *));
18740 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018741 p->error_indicator = 1;
18742 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
18747 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018748 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018749 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018750 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018751 return NULL;
18752 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018753 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 +030018754 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070018755 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018756 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018757 )
18758 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018759 _res = param_no_default_var;
18760 if (_n == _children_capacity) {
18761 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018762 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18763 if (!_new_children) {
18764 p->error_indicator = 1;
18765 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018766 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018767 return NULL;
18768 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018769 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018771 _children[_n++] = _res;
18772 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018774 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018775 D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
18776 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018778 if (_n == 0 || p->error_indicator) {
18779 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018780 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018781 return NULL;
18782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018783 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18784 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018785 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018786 p->error_indicator = 1;
18787 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018788 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018789 return NULL;
18790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018791 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18792 PyMem_Free(_children);
18793 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018794 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018795 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018796}
18797
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018798// _loop0_61: param_no_default
18799static asdl_seq *
18800_loop0_61_rule(Parser *p)
18801{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018802 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018803 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018804 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018805 return NULL;
18806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018807 void *_res = NULL;
18808 int _mark = p->mark;
18809 int _start_mark = p->mark;
18810 void **_children = PyMem_Malloc(sizeof(void *));
18811 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018812 p->error_indicator = 1;
18813 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018814 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018815 return NULL;
18816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018817 ssize_t _children_capacity = 1;
18818 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018819 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018820 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018821 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018822 return NULL;
18823 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018824 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 +030018825 arg_ty param_no_default_var;
18826 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018827 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018828 )
18829 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018830 _res = param_no_default_var;
18831 if (_n == _children_capacity) {
18832 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018833 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18834 if (!_new_children) {
18835 p->error_indicator = 1;
18836 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018837 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018838 return NULL;
18839 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018840 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018842 _children[_n++] = _res;
18843 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018845 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018846 D(fprintf(stderr, "%*c%s _loop0_61[%d-%d]: %s failed!\n", p->level, ' ',
18847 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018849 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18850 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018851 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018852 p->error_indicator = 1;
18853 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018854 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018855 return NULL;
18856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018857 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18858 PyMem_Free(_children);
18859 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018860 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018861 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018862}
18863
18864// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018865static asdl_seq *
18866_loop1_62_rule(Parser *p)
18867{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018868 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070018869 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018870 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018871 return NULL;
18872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018873 void *_res = NULL;
18874 int _mark = p->mark;
18875 int _start_mark = p->mark;
18876 void **_children = PyMem_Malloc(sizeof(void *));
18877 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018878 p->error_indicator = 1;
18879 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018880 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018881 return NULL;
18882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018883 ssize_t _children_capacity = 1;
18884 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018885 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018886 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018887 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018888 return NULL;
18889 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018890 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 +030018891 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070018892 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018893 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018894 )
18895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018896 _res = param_with_default_var;
18897 if (_n == _children_capacity) {
18898 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018899 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18900 if (!_new_children) {
18901 p->error_indicator = 1;
18902 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018903 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018904 return NULL;
18905 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018906 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018908 _children[_n++] = _res;
18909 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018911 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018912 D(fprintf(stderr, "%*c%s _loop1_62[%d-%d]: %s failed!\n", p->level, ' ',
18913 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070018914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018915 if (_n == 0 || p->error_indicator) {
18916 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018917 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018918 return NULL;
18919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018920 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18921 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018922 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018923 p->error_indicator = 1;
18924 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018925 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070018926 return NULL;
18927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018928 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18929 PyMem_Free(_children);
18930 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018931 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018932 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018933}
18934
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018935// _loop0_63: param_no_default
18936static asdl_seq *
18937_loop0_63_rule(Parser *p)
18938{
Pablo Galindo800a35c62020-05-25 18:38:45 +010018939 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018940 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018941 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018942 return NULL;
18943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018944 void *_res = NULL;
18945 int _mark = p->mark;
18946 int _start_mark = p->mark;
18947 void **_children = PyMem_Malloc(sizeof(void *));
18948 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018949 p->error_indicator = 1;
18950 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018951 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018952 return NULL;
18953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018954 ssize_t _children_capacity = 1;
18955 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018956 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018957 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010018958 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018959 return NULL;
18960 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010018961 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 +030018962 arg_ty param_no_default_var;
18963 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018964 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018965 )
18966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018967 _res = param_no_default_var;
18968 if (_n == _children_capacity) {
18969 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018970 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18971 if (!_new_children) {
18972 p->error_indicator = 1;
18973 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018974 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018975 return NULL;
18976 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018977 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018979 _children[_n++] = _res;
18980 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018982 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010018983 D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
18984 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018986 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18987 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018988 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018989 p->error_indicator = 1;
18990 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010018991 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018992 return NULL;
18993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018994 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18995 PyMem_Free(_children);
18996 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010018997 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018998 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018999}
19000
19001// _loop1_64: param_with_default
19002static asdl_seq *
19003_loop1_64_rule(Parser *p)
19004{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019005 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019006 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019007 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019008 return NULL;
19009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019010 void *_res = NULL;
19011 int _mark = p->mark;
19012 int _start_mark = p->mark;
19013 void **_children = PyMem_Malloc(sizeof(void *));
19014 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019015 p->error_indicator = 1;
19016 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019017 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019018 return NULL;
19019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019020 ssize_t _children_capacity = 1;
19021 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019022 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019023 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019024 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019025 return NULL;
19026 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019027 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 +030019028 NameDefaultPair* param_with_default_var;
19029 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019030 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019031 )
19032 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019033 _res = param_with_default_var;
19034 if (_n == _children_capacity) {
19035 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019036 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19037 if (!_new_children) {
19038 p->error_indicator = 1;
19039 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019040 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019041 return NULL;
19042 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019043 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019045 _children[_n++] = _res;
19046 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019048 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019049 D(fprintf(stderr, "%*c%s _loop1_64[%d-%d]: %s failed!\n", p->level, ' ',
19050 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019052 if (_n == 0 || p->error_indicator) {
19053 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019054 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019055 return NULL;
19056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019057 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19058 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019059 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019060 p->error_indicator = 1;
19061 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019062 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019063 return NULL;
19064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019065 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19066 PyMem_Free(_children);
19067 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019068 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019069 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019070}
19071
19072// _loop0_65: param_maybe_default
19073static asdl_seq *
19074_loop0_65_rule(Parser *p)
19075{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019076 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019077 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019078 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019079 return NULL;
19080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019081 void *_res = NULL;
19082 int _mark = p->mark;
19083 int _start_mark = p->mark;
19084 void **_children = PyMem_Malloc(sizeof(void *));
19085 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019086 p->error_indicator = 1;
19087 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
19092 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019093 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019094 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019095 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019096 return NULL;
19097 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019098 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 +030019099 NameDefaultPair* param_maybe_default_var;
19100 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019101 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019102 )
19103 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019104 _res = param_maybe_default_var;
19105 if (_n == _children_capacity) {
19106 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019107 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19108 if (!_new_children) {
19109 p->error_indicator = 1;
19110 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019111 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019112 return NULL;
19113 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019114 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019116 _children[_n++] = _res;
19117 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019119 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019120 D(fprintf(stderr, "%*c%s _loop0_65[%d-%d]: %s failed!\n", p->level, ' ',
19121 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019123 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19124 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019125 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019126 p->error_indicator = 1;
19127 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019128 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019129 return NULL;
19130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019131 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19132 PyMem_Free(_children);
19133 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019134 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019135 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019136}
19137
19138// _loop1_66: param_maybe_default
19139static asdl_seq *
19140_loop1_66_rule(Parser *p)
19141{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019142 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019143 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019144 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019145 return NULL;
19146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019147 void *_res = NULL;
19148 int _mark = p->mark;
19149 int _start_mark = p->mark;
19150 void **_children = PyMem_Malloc(sizeof(void *));
19151 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019152 p->error_indicator = 1;
19153 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019154 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019155 return NULL;
19156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019157 ssize_t _children_capacity = 1;
19158 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019159 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019160 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019161 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019162 return NULL;
19163 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019164 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 +030019165 NameDefaultPair* param_maybe_default_var;
19166 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019167 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019168 )
19169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019170 _res = param_maybe_default_var;
19171 if (_n == _children_capacity) {
19172 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019173 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19174 if (!_new_children) {
19175 p->error_indicator = 1;
19176 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019177 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019178 return NULL;
19179 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019180 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019182 _children[_n++] = _res;
19183 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019185 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019186 D(fprintf(stderr, "%*c%s _loop1_66[%d-%d]: %s failed!\n", p->level, ' ',
19187 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019189 if (_n == 0 || p->error_indicator) {
19190 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019191 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019192 return NULL;
19193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019194 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19195 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019196 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019197 p->error_indicator = 1;
19198 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019199 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019200 return NULL;
19201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019202 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19203 PyMem_Free(_children);
19204 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019205 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019206 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019207}
19208
19209// _loop1_67: ('@' named_expression NEWLINE)
19210static asdl_seq *
19211_loop1_67_rule(Parser *p)
19212{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019213 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019214 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019215 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019216 return NULL;
19217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019218 void *_res = NULL;
19219 int _mark = p->mark;
19220 int _start_mark = p->mark;
19221 void **_children = PyMem_Malloc(sizeof(void *));
19222 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019223 p->error_indicator = 1;
19224 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
19229 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019230 { // ('@' named_expression NEWLINE)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019231 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019232 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019233 return NULL;
19234 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019235 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 +010019236 void *_tmp_141_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019237 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010019238 (_tmp_141_var = _tmp_141_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019239 )
19240 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010019241 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019242 if (_n == _children_capacity) {
19243 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019244 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19245 if (!_new_children) {
19246 p->error_indicator = 1;
19247 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019248 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019249 return NULL;
19250 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019251 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019253 _children[_n++] = _res;
19254 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019256 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019257 D(fprintf(stderr, "%*c%s _loop1_67[%d-%d]: %s failed!\n", p->level, ' ',
19258 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019260 if (_n == 0 || p->error_indicator) {
19261 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019262 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019263 return NULL;
19264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019265 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19266 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019267 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019268 p->error_indicator = 1;
19269 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019270 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019271 return NULL;
19272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019273 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19274 PyMem_Free(_children);
19275 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019276 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019277 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019278}
19279
19280// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019281static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019282_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019283{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019284 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019285 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019286 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019287 return NULL;
19288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019289 void * _res = NULL;
19290 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019291 { // '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019292 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019293 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019294 return NULL;
19295 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019296 D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019297 Token * _literal;
19298 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019299 void *z;
19300 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019301 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019302 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019303 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019304 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019305 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019306 )
19307 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019308 D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019309 _res = z;
19310 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019311 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019312 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019313 return NULL;
19314 }
19315 goto done;
19316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019317 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019318 D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
19319 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019321 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019322 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010019323 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019324 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019325}
19326
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019327// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019328static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019329_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019330{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019331 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019332 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019333 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019334 return NULL;
19335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019336 void *_res = NULL;
19337 int _mark = p->mark;
19338 int _start_mark = p->mark;
19339 void **_children = PyMem_Malloc(sizeof(void *));
19340 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019341 p->error_indicator = 1;
19342 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019343 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019344 return NULL;
19345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019346 ssize_t _children_capacity = 1;
19347 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019348 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019349 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019350 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019351 return NULL;
19352 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019353 D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019354 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019355 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019356 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019357 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019358 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019359 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019360 )
19361 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019362 _res = elem;
19363 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019364 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019365 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019366 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019367 return NULL;
19368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019369 if (_n == _children_capacity) {
19370 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019371 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19372 if (!_new_children) {
19373 p->error_indicator = 1;
19374 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019375 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019376 return NULL;
19377 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019378 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019380 _children[_n++] = _res;
19381 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019383 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019384 D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
19385 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019387 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19388 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019389 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019390 p->error_indicator = 1;
19391 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019392 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019393 return NULL;
19394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019395 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19396 PyMem_Free(_children);
19397 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019398 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019399 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019400}
19401
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019402// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019403static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019404_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019405{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019406 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019407 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019408 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019409 return NULL;
19410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019411 asdl_seq * _res = NULL;
19412 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019413 { // star_expression _loop0_70
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019414 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019415 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019416 return NULL;
19417 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019418 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 +010019419 expr_ty elem;
19420 asdl_seq * seq;
19421 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010019422 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019423 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019424 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019425 )
19426 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019427 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 +010019428 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019429 goto done;
19430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019431 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019432 D(fprintf(stderr, "%*c%s _gather_69[%d-%d]: %s failed!\n", p->level, ' ',
19433 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression _loop0_70"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019435 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019436 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010019437 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019438 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019439}
19440
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019441// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019442static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019443_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019444{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019445 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019446 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019447 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019448 return NULL;
19449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019450 void *_res = NULL;
19451 int _mark = p->mark;
19452 int _start_mark = p->mark;
19453 void **_children = PyMem_Malloc(sizeof(void *));
19454 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019455 p->error_indicator = 1;
19456 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019457 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019458 return NULL;
19459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019460 ssize_t _children_capacity = 1;
19461 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019462 { // (',' star_expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019463 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019464 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019465 return NULL;
19466 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019467 D(fprintf(stderr, "%*c> _loop1_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010019468 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019469 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010019470 (_tmp_142_var = _tmp_142_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019471 )
19472 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010019473 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019474 if (_n == _children_capacity) {
19475 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019476 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19477 if (!_new_children) {
19478 p->error_indicator = 1;
19479 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019480 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019481 return NULL;
19482 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019483 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019485 _children[_n++] = _res;
19486 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019488 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019489 D(fprintf(stderr, "%*c%s _loop1_71[%d-%d]: %s failed!\n", p->level, ' ',
19490 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019492 if (_n == 0 || p->error_indicator) {
19493 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019494 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019495 return NULL;
19496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019497 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19498 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019499 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019500 p->error_indicator = 1;
19501 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019502 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019503 return NULL;
19504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019505 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19506 PyMem_Free(_children);
19507 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019508 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019509 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019510}
19511
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019512// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019513static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019514_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019515{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019516 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019517 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019518 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019519 return NULL;
19520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019521 void *_res = NULL;
19522 int _mark = p->mark;
19523 int _start_mark = p->mark;
19524 void **_children = PyMem_Malloc(sizeof(void *));
19525 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019526 p->error_indicator = 1;
19527 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
19532 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019533 { // ',' star_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019534 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019535 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019536 return NULL;
19537 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019538 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 +010019539 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019540 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019541 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019542 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019543 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019544 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019545 )
19546 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019547 _res = elem;
19548 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019549 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019550 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019551 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019552 return NULL;
19553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019554 if (_n == _children_capacity) {
19555 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019556 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19557 if (!_new_children) {
19558 p->error_indicator = 1;
19559 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019560 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019561 return NULL;
19562 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019563 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019565 _children[_n++] = _res;
19566 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019568 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019569 D(fprintf(stderr, "%*c%s _loop0_73[%d-%d]: %s failed!\n", p->level, ' ',
19570 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019572 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19573 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019574 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019575 p->error_indicator = 1;
19576 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019577 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019578 return NULL;
19579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019580 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19581 PyMem_Free(_children);
19582 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019583 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019584 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019585}
19586
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019587// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019588static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019589_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019590{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019591 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019592 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019593 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019594 return NULL;
19595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019596 asdl_seq * _res = NULL;
19597 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019598 { // star_named_expression _loop0_73
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019599 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019600 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019601 return NULL;
19602 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019603 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 +010019604 expr_ty elem;
19605 asdl_seq * seq;
19606 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010019607 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019608 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019609 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019610 )
19611 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019612 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 +010019613 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019614 goto done;
19615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019616 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019617 D(fprintf(stderr, "%*c%s _gather_72[%d-%d]: %s failed!\n", p->level, ' ',
19618 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_73"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019620 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019621 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010019622 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019623 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019624}
19625
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019626// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019627static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030019628_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019629{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019630 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019631 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019632 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019633 return NULL;
19634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019635 void *_res = NULL;
19636 int _mark = p->mark;
19637 int _start_mark = p->mark;
19638 void **_children = PyMem_Malloc(sizeof(void *));
19639 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019640 p->error_indicator = 1;
19641 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019642 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019643 return NULL;
19644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019645 ssize_t _children_capacity = 1;
19646 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019647 { // (',' expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019648 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019649 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019650 return NULL;
19651 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019652 D(fprintf(stderr, "%*c> _loop1_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010019653 void *_tmp_143_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019654 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010019655 (_tmp_143_var = _tmp_143_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019656 )
19657 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010019658 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019659 if (_n == _children_capacity) {
19660 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019661 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19662 if (!_new_children) {
19663 p->error_indicator = 1;
19664 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019665 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019666 return NULL;
19667 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019668 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019670 _children[_n++] = _res;
19671 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019673 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019674 D(fprintf(stderr, "%*c%s _loop1_74[%d-%d]: %s failed!\n", p->level, ' ',
19675 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019677 if (_n == 0 || p->error_indicator) {
19678 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019679 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019680 return NULL;
19681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019682 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19683 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019684 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019685 p->error_indicator = 1;
19686 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019687 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019688 return NULL;
19689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019690 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19691 PyMem_Free(_children);
19692 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019693 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019694 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019695}
19696
Guido van Rossum3941d972020-05-01 09:42:03 -070019697// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019698static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070019699_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019700{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019701 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019702 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019703 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019704 return NULL;
19705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019706 void *_res = NULL;
19707 int _mark = p->mark;
19708 int _start_mark = p->mark;
19709 void **_children = PyMem_Malloc(sizeof(void *));
19710 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019711 p->error_indicator = 1;
19712 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
19717 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019718 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019719 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019720 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019721 return NULL;
19722 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019723 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 -070019724 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019725 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019726 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019727 )
19728 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019729 _res = lambda_param_no_default_var;
19730 if (_n == _children_capacity) {
19731 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019732 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19733 if (!_new_children) {
19734 p->error_indicator = 1;
19735 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019736 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019737 return NULL;
19738 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019739 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019741 _children[_n++] = _res;
19742 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019744 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019745 D(fprintf(stderr, "%*c%s _loop0_75[%d-%d]: %s failed!\n", p->level, ' ',
19746 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019748 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19749 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019750 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019751 p->error_indicator = 1;
19752 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019753 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019754 return NULL;
19755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019756 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19757 PyMem_Free(_children);
19758 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019759 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019760 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019761}
19762
Guido van Rossum3941d972020-05-01 09:42:03 -070019763// _loop0_76: lambda_param_with_default
19764static asdl_seq *
19765_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019766{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019767 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019768 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019769 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019770 return NULL;
19771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019772 void *_res = NULL;
19773 int _mark = p->mark;
19774 int _start_mark = p->mark;
19775 void **_children = PyMem_Malloc(sizeof(void *));
19776 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019777 p->error_indicator = 1;
19778 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019779 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019780 return NULL;
19781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019782 ssize_t _children_capacity = 1;
19783 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019784 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019785 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019786 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019787 return NULL;
19788 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019789 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 -070019790 NameDefaultPair* lambda_param_with_default_var;
19791 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019792 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019793 )
19794 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019795 _res = lambda_param_with_default_var;
19796 if (_n == _children_capacity) {
19797 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019798 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19799 if (!_new_children) {
19800 p->error_indicator = 1;
19801 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019802 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019803 return NULL;
19804 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019805 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019807 _children[_n++] = _res;
19808 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019810 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019811 D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
19812 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019814 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19815 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019816 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019817 p->error_indicator = 1;
19818 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019819 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019820 return NULL;
19821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019822 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19823 PyMem_Free(_children);
19824 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019825 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019826 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019827}
19828
Guido van Rossum3941d972020-05-01 09:42:03 -070019829// _loop0_77: lambda_param_with_default
19830static asdl_seq *
19831_loop0_77_rule(Parser *p)
19832{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019833 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070019834 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019835 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019836 return NULL;
19837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019838 void *_res = NULL;
19839 int _mark = p->mark;
19840 int _start_mark = p->mark;
19841 void **_children = PyMem_Malloc(sizeof(void *));
19842 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019843 p->error_indicator = 1;
19844 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019845 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019846 return NULL;
19847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019848 ssize_t _children_capacity = 1;
19849 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019850 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019851 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019852 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019853 return NULL;
19854 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019855 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 -070019856 NameDefaultPair* lambda_param_with_default_var;
19857 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019858 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070019859 )
19860 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019861 _res = lambda_param_with_default_var;
19862 if (_n == _children_capacity) {
19863 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019864 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19865 if (!_new_children) {
19866 p->error_indicator = 1;
19867 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019868 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019869 return NULL;
19870 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019871 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070019872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019873 _children[_n++] = _res;
19874 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070019875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019876 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019877 D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
19878 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070019879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019880 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19881 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019882 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019883 p->error_indicator = 1;
19884 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019885 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019886 return NULL;
19887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019888 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19889 PyMem_Free(_children);
19890 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019891 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019892 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070019893}
19894
19895// _loop1_78: lambda_param_no_default
19896static asdl_seq *
19897_loop1_78_rule(Parser *p)
19898{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019899 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070019900 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019901 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019902 return NULL;
19903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019904 void *_res = NULL;
19905 int _mark = p->mark;
19906 int _start_mark = p->mark;
19907 void **_children = PyMem_Malloc(sizeof(void *));
19908 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019909 p->error_indicator = 1;
19910 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019911 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019912 return NULL;
19913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019914 ssize_t _children_capacity = 1;
19915 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019916 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019917 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019918 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019919 return NULL;
19920 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019921 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 -070019922 arg_ty lambda_param_no_default_var;
19923 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019924 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070019925 )
19926 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019927 _res = lambda_param_no_default_var;
19928 if (_n == _children_capacity) {
19929 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019930 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19931 if (!_new_children) {
19932 p->error_indicator = 1;
19933 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019934 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019935 return NULL;
19936 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019937 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070019938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019939 _children[_n++] = _res;
19940 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070019941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019942 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010019943 D(fprintf(stderr, "%*c%s _loop1_78[%d-%d]: %s failed!\n", p->level, ' ',
19944 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070019945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019946 if (_n == 0 || p->error_indicator) {
19947 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019948 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019949 return NULL;
19950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019951 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19952 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019953 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019954 p->error_indicator = 1;
19955 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010019956 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019957 return NULL;
19958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019959 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19960 PyMem_Free(_children);
19961 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010019962 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019963 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070019964}
19965
19966// _loop0_79: lambda_param_with_default
19967static asdl_seq *
19968_loop0_79_rule(Parser *p)
19969{
Pablo Galindo800a35c62020-05-25 18:38:45 +010019970 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070019971 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019972 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070019973 return NULL;
19974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019975 void *_res = NULL;
19976 int _mark = p->mark;
19977 int _start_mark = p->mark;
19978 void **_children = PyMem_Malloc(sizeof(void *));
19979 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019980 p->error_indicator = 1;
19981 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
19986 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070019987 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019988 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010019989 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019990 return NULL;
19991 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010019992 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 -070019993 NameDefaultPair* lambda_param_with_default_var;
19994 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019995 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070019996 )
19997 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019998 _res = lambda_param_with_default_var;
19999 if (_n == _children_capacity) {
20000 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020001 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20002 if (!_new_children) {
20003 p->error_indicator = 1;
20004 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020005 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020006 return NULL;
20007 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020008 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020010 _children[_n++] = _res;
20011 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020013 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020014 D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
20015 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020017 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20018 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020019 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020020 p->error_indicator = 1;
20021 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020022 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020023 return NULL;
20024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020025 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20026 PyMem_Free(_children);
20027 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020028 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020029 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020030}
20031
20032// _loop1_80: lambda_param_with_default
20033static asdl_seq *
20034_loop1_80_rule(Parser *p)
20035{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020036 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020037 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020038 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020039 return NULL;
20040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020041 void *_res = NULL;
20042 int _mark = p->mark;
20043 int _start_mark = p->mark;
20044 void **_children = PyMem_Malloc(sizeof(void *));
20045 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020046 p->error_indicator = 1;
20047 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020048 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020049 return NULL;
20050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020051 ssize_t _children_capacity = 1;
20052 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020053 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020054 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020055 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020056 return NULL;
20057 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020058 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 -070020059 NameDefaultPair* lambda_param_with_default_var;
20060 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020061 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020062 )
20063 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020064 _res = lambda_param_with_default_var;
20065 if (_n == _children_capacity) {
20066 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020067 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20068 if (!_new_children) {
20069 p->error_indicator = 1;
20070 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020071 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020072 return NULL;
20073 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020074 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020076 _children[_n++] = _res;
20077 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020079 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020080 D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
20081 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020083 if (_n == 0 || p->error_indicator) {
20084 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020085 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020086 return NULL;
20087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020088 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20089 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020090 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020091 p->error_indicator = 1;
20092 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020093 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020094 return NULL;
20095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020096 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20097 PyMem_Free(_children);
20098 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020099 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020100 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020101}
20102
20103// _loop1_81: lambda_param_no_default
20104static asdl_seq *
20105_loop1_81_rule(Parser *p)
20106{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020107 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020108 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020109 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020110 return NULL;
20111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020112 void *_res = NULL;
20113 int _mark = p->mark;
20114 int _start_mark = p->mark;
20115 void **_children = PyMem_Malloc(sizeof(void *));
20116 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020117 p->error_indicator = 1;
20118 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
20123 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020124 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020125 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020126 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020127 return NULL;
20128 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020129 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 -070020130 arg_ty lambda_param_no_default_var;
20131 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020132 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020133 )
20134 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020135 _res = lambda_param_no_default_var;
20136 if (_n == _children_capacity) {
20137 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020138 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20139 if (!_new_children) {
20140 p->error_indicator = 1;
20141 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020142 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020143 return NULL;
20144 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020145 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020147 _children[_n++] = _res;
20148 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020150 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020151 D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
20152 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020154 if (_n == 0 || p->error_indicator) {
20155 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020156 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020157 return NULL;
20158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020159 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20160 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020161 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020162 p->error_indicator = 1;
20163 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020164 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020165 return NULL;
20166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020167 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20168 PyMem_Free(_children);
20169 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020170 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020171 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020172}
20173
20174// _loop1_82: lambda_param_no_default
20175static asdl_seq *
20176_loop1_82_rule(Parser *p)
20177{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020178 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020179 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020180 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020181 return NULL;
20182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020183 void *_res = NULL;
20184 int _mark = p->mark;
20185 int _start_mark = p->mark;
20186 void **_children = PyMem_Malloc(sizeof(void *));
20187 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020188 p->error_indicator = 1;
20189 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
20194 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020195 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020196 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020197 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020198 return NULL;
20199 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020200 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 -070020201 arg_ty lambda_param_no_default_var;
20202 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020203 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020204 )
20205 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020206 _res = lambda_param_no_default_var;
20207 if (_n == _children_capacity) {
20208 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020209 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20210 if (!_new_children) {
20211 p->error_indicator = 1;
20212 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020213 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020214 return NULL;
20215 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020216 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020218 _children[_n++] = _res;
20219 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020221 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020222 D(fprintf(stderr, "%*c%s _loop1_82[%d-%d]: %s failed!\n", p->level, ' ',
20223 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020225 if (_n == 0 || p->error_indicator) {
20226 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020227 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020228 return NULL;
20229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020230 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20231 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020232 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020233 p->error_indicator = 1;
20234 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020235 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020236 return NULL;
20237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020238 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20239 PyMem_Free(_children);
20240 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020241 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020242 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020243}
20244
20245// _loop0_83: lambda_param_no_default
20246static asdl_seq *
20247_loop0_83_rule(Parser *p)
20248{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020249 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020250 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020251 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020252 return NULL;
20253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020254 void *_res = NULL;
20255 int _mark = p->mark;
20256 int _start_mark = p->mark;
20257 void **_children = PyMem_Malloc(sizeof(void *));
20258 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020259 p->error_indicator = 1;
20260 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
20265 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020266 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020267 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020268 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020269 return NULL;
20270 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020271 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 -070020272 arg_ty lambda_param_no_default_var;
20273 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020274 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020275 )
20276 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020277 _res = lambda_param_no_default_var;
20278 if (_n == _children_capacity) {
20279 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020280 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20281 if (!_new_children) {
20282 p->error_indicator = 1;
20283 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020284 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020285 return NULL;
20286 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020287 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020289 _children[_n++] = _res;
20290 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020292 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020293 D(fprintf(stderr, "%*c%s _loop0_83[%d-%d]: %s failed!\n", p->level, ' ',
20294 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020296 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20297 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020298 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020299 p->error_indicator = 1;
20300 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020301 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020302 return NULL;
20303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020304 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20305 PyMem_Free(_children);
20306 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020307 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020308 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020309}
20310
20311// _loop1_84: lambda_param_with_default
20312static asdl_seq *
20313_loop1_84_rule(Parser *p)
20314{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020315 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020316 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020317 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020318 return NULL;
20319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020320 void *_res = NULL;
20321 int _mark = p->mark;
20322 int _start_mark = p->mark;
20323 void **_children = PyMem_Malloc(sizeof(void *));
20324 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020325 p->error_indicator = 1;
20326 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020327 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020328 return NULL;
20329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020330 ssize_t _children_capacity = 1;
20331 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020332 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020333 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020334 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020335 return NULL;
20336 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020337 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 -070020338 NameDefaultPair* lambda_param_with_default_var;
20339 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020340 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020341 )
20342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020343 _res = lambda_param_with_default_var;
20344 if (_n == _children_capacity) {
20345 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020346 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20347 if (!_new_children) {
20348 p->error_indicator = 1;
20349 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020350 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020351 return NULL;
20352 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020353 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020355 _children[_n++] = _res;
20356 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020358 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020359 D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ',
20360 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020362 if (_n == 0 || p->error_indicator) {
20363 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020364 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020365 return NULL;
20366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020367 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20368 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020369 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020370 p->error_indicator = 1;
20371 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020372 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020373 return NULL;
20374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020375 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20376 PyMem_Free(_children);
20377 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020378 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020379 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020380}
20381
20382// _loop0_85: lambda_param_no_default
20383static asdl_seq *
20384_loop0_85_rule(Parser *p)
20385{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020386 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070020387 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020388 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020389 return NULL;
20390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020391 void *_res = NULL;
20392 int _mark = p->mark;
20393 int _start_mark = p->mark;
20394 void **_children = PyMem_Malloc(sizeof(void *));
20395 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020396 p->error_indicator = 1;
20397 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
20402 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020403 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020404 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020405 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020406 return NULL;
20407 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020408 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 -070020409 arg_ty lambda_param_no_default_var;
20410 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020411 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070020412 )
20413 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020414 _res = lambda_param_no_default_var;
20415 if (_n == _children_capacity) {
20416 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020417 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20418 if (!_new_children) {
20419 p->error_indicator = 1;
20420 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020421 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020422 return NULL;
20423 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020424 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070020425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020426 _children[_n++] = _res;
20427 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020429 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020430 D(fprintf(stderr, "%*c%s _loop0_85[%d-%d]: %s failed!\n", p->level, ' ',
20431 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
Guido van Rossum3941d972020-05-01 09:42:03 -070020432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020433 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20434 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020435 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020436 p->error_indicator = 1;
20437 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020438 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020439 return NULL;
20440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020441 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20442 PyMem_Free(_children);
20443 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020444 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020445 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070020446}
20447
20448// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020449static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030020450_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020451{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020452 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020453 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020454 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020455 return NULL;
20456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020457 void *_res = NULL;
20458 int _mark = p->mark;
20459 int _start_mark = p->mark;
20460 void **_children = PyMem_Malloc(sizeof(void *));
20461 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020462 p->error_indicator = 1;
20463 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020464 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020465 return NULL;
20466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020467 ssize_t _children_capacity = 1;
20468 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020469 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020470 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020471 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020472 return NULL;
20473 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020474 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 -070020475 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020476 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020477 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020478 )
20479 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020480 _res = lambda_param_with_default_var;
20481 if (_n == _children_capacity) {
20482 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020483 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20484 if (!_new_children) {
20485 p->error_indicator = 1;
20486 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020487 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020488 return NULL;
20489 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020490 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020492 _children[_n++] = _res;
20493 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020495 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020496 D(fprintf(stderr, "%*c%s _loop1_86[%d-%d]: %s failed!\n", p->level, ' ',
20497 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020499 if (_n == 0 || p->error_indicator) {
20500 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020501 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020502 return NULL;
20503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020504 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20505 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020506 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020507 p->error_indicator = 1;
20508 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020509 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020510 return NULL;
20511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020512 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20513 PyMem_Free(_children);
20514 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020515 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020516 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020517}
20518
Guido van Rossum3941d972020-05-01 09:42:03 -070020519// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020520static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020521_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020522{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020523 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020524 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020525 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020526 return NULL;
20527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020528 void *_res = NULL;
20529 int _mark = p->mark;
20530 int _start_mark = p->mark;
20531 void **_children = PyMem_Malloc(sizeof(void *));
20532 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020533 p->error_indicator = 1;
20534 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
20539 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020540 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020541 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020542 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020543 return NULL;
20544 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020545 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 -070020546 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020547 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020548 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020549 )
20550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020551 _res = lambda_param_maybe_default_var;
20552 if (_n == _children_capacity) {
20553 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020554 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20555 if (!_new_children) {
20556 p->error_indicator = 1;
20557 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020558 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020559 return NULL;
20560 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020561 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020563 _children[_n++] = _res;
20564 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020566 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020567 D(fprintf(stderr, "%*c%s _loop0_87[%d-%d]: %s failed!\n", p->level, ' ',
20568 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020570 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20571 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020572 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020573 p->error_indicator = 1;
20574 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020575 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020576 return NULL;
20577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020578 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20579 PyMem_Free(_children);
20580 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020581 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020582 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020583}
20584
Guido van Rossum3941d972020-05-01 09:42:03 -070020585// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020586static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020587_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020588{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020589 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020590 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020591 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020592 return NULL;
20593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020594 void *_res = NULL;
20595 int _mark = p->mark;
20596 int _start_mark = p->mark;
20597 void **_children = PyMem_Malloc(sizeof(void *));
20598 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020599 p->error_indicator = 1;
20600 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020601 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020602 return NULL;
20603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020604 ssize_t _children_capacity = 1;
20605 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070020606 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020607 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020608 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020609 return NULL;
20610 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020611 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 -070020612 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020613 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020614 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020615 )
20616 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020617 _res = lambda_param_maybe_default_var;
20618 if (_n == _children_capacity) {
20619 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020620 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20621 if (!_new_children) {
20622 p->error_indicator = 1;
20623 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020624 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020625 return NULL;
20626 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020627 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020629 _children[_n++] = _res;
20630 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020632 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020633 D(fprintf(stderr, "%*c%s _loop1_88[%d-%d]: %s failed!\n", p->level, ' ',
20634 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020636 if (_n == 0 || p->error_indicator) {
20637 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020638 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070020639 return NULL;
20640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020641 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20642 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020643 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020644 p->error_indicator = 1;
20645 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020646 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020647 return NULL;
20648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020649 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20650 PyMem_Free(_children);
20651 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020652 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020653 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020654}
20655
Guido van Rossum3941d972020-05-01 09:42:03 -070020656// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020657static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020658_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020659{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020660 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020661 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020662 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020663 return NULL;
20664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020665 void *_res = NULL;
20666 int _mark = p->mark;
20667 int _start_mark = p->mark;
20668 void **_children = PyMem_Malloc(sizeof(void *));
20669 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020670 p->error_indicator = 1;
20671 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020672 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020673 return NULL;
20674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020675 ssize_t _children_capacity = 1;
20676 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020677 { // ('or' conjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020678 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020679 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020680 return NULL;
20681 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020682 D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010020683 void *_tmp_144_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020684 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010020685 (_tmp_144_var = _tmp_144_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020686 )
20687 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010020688 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020689 if (_n == _children_capacity) {
20690 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020691 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20692 if (!_new_children) {
20693 p->error_indicator = 1;
20694 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020695 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020696 return NULL;
20697 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020698 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020700 _children[_n++] = _res;
20701 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020703 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020704 D(fprintf(stderr, "%*c%s _loop1_89[%d-%d]: %s failed!\n", p->level, ' ',
20705 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020707 if (_n == 0 || p->error_indicator) {
20708 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020709 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020710 return NULL;
20711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020712 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20713 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020714 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020715 p->error_indicator = 1;
20716 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020717 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020718 return NULL;
20719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020720 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20721 PyMem_Free(_children);
20722 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020723 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020724 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020725}
20726
Guido van Rossum3941d972020-05-01 09:42:03 -070020727// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020728static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020729_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020730{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020731 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020732 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020733 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020734 return NULL;
20735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020736 void *_res = NULL;
20737 int _mark = p->mark;
20738 int _start_mark = p->mark;
20739 void **_children = PyMem_Malloc(sizeof(void *));
20740 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020741 p->error_indicator = 1;
20742 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
20747 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020748 { // ('and' inversion)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020749 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020750 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020751 return NULL;
20752 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020753 D(fprintf(stderr, "%*c> _loop1_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010020754 void *_tmp_145_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020755 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010020756 (_tmp_145_var = _tmp_145_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020757 )
20758 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010020759 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020760 if (_n == _children_capacity) {
20761 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020762 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20763 if (!_new_children) {
20764 p->error_indicator = 1;
20765 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020766 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020767 return NULL;
20768 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020769 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020771 _children[_n++] = _res;
20772 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020774 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020775 D(fprintf(stderr, "%*c%s _loop1_90[%d-%d]: %s failed!\n", p->level, ' ',
20776 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020778 if (_n == 0 || p->error_indicator) {
20779 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020780 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020781 return NULL;
20782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020783 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20784 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020785 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020786 p->error_indicator = 1;
20787 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020788 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020789 return NULL;
20790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020791 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20792 PyMem_Free(_children);
20793 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020794 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020795 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020796}
20797
Guido van Rossum3941d972020-05-01 09:42:03 -070020798// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020799static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020800_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020801{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020802 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020803 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020804 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020805 return NULL;
20806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020807 void *_res = NULL;
20808 int _mark = p->mark;
20809 int _start_mark = p->mark;
20810 void **_children = PyMem_Malloc(sizeof(void *));
20811 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020812 p->error_indicator = 1;
20813 PyErr_NoMemory();
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 ssize_t _children_capacity = 1;
20818 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020819 { // compare_op_bitwise_or_pair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020820 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020821 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020822 return NULL;
20823 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020824 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 +010020825 CmpopExprPair* compare_op_bitwise_or_pair_var;
20826 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010020827 (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 +010020828 )
20829 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020830 _res = compare_op_bitwise_or_pair_var;
20831 if (_n == _children_capacity) {
20832 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020833 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20834 if (!_new_children) {
20835 p->error_indicator = 1;
20836 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020837 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020838 return NULL;
20839 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020840 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020842 _children[_n++] = _res;
20843 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020845 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020846 D(fprintf(stderr, "%*c%s _loop1_91[%d-%d]: %s failed!\n", p->level, ' ',
20847 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020849 if (_n == 0 || p->error_indicator) {
20850 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020851 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020852 return NULL;
20853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020854 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20855 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020856 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020857 p->error_indicator = 1;
20858 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020859 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020860 return NULL;
20861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020862 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20863 PyMem_Free(_children);
20864 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020865 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020866 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020867}
20868
Guido van Rossum3941d972020-05-01 09:42:03 -070020869// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010020870static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070020871_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010020872{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020873 D(p->level++);
Pablo Galindo2b74c832020-04-27 18:02:07 +010020874 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020875 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010020876 return NULL;
20877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020878 void * _res = NULL;
20879 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010020880 { // '!='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020881 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020882 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020883 return NULL;
20884 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020885 D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
Pablo Galindob796b3f2020-05-01 12:32:26 +010020886 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010020887 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010020888 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010020889 )
20890 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020891 D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020892 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
20893 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010020894 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020895 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010020896 return NULL;
20897 }
20898 goto done;
20899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020900 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020901 D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ',
20902 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
Pablo Galindo2b74c832020-04-27 18:02:07 +010020903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020904 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010020905 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010020906 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020907 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010020908}
20909
Guido van Rossum3941d972020-05-01 09:42:03 -070020910// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020911static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020912_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020913{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020914 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020915 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020916 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020917 return NULL;
20918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020919 void *_res = NULL;
20920 int _mark = p->mark;
20921 int _start_mark = p->mark;
20922 void **_children = PyMem_Malloc(sizeof(void *));
20923 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020924 p->error_indicator = 1;
20925 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020926 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020927 return NULL;
20928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020929 ssize_t _children_capacity = 1;
20930 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020931 { // ',' slice
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020932 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020933 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020934 return NULL;
20935 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010020936 D(fprintf(stderr, "%*c> _loop0_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' slice"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020937 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020938 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020939 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020940 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010020942 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020943 )
20944 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020945 _res = elem;
20946 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020947 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020948 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020949 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020950 return NULL;
20951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020952 if (_n == _children_capacity) {
20953 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020954 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
20955 if (!_new_children) {
20956 p->error_indicator = 1;
20957 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020958 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020959 return NULL;
20960 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020961 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020963 _children[_n++] = _res;
20964 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020966 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010020967 D(fprintf(stderr, "%*c%s _loop0_94[%d-%d]: %s failed!\n", p->level, ' ',
20968 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' slice"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020970 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
20971 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020972 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030020973 p->error_indicator = 1;
20974 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010020975 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020976 return NULL;
20977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020978 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
20979 PyMem_Free(_children);
20980 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010020981 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020982 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020983}
20984
Guido van Rossum3941d972020-05-01 09:42:03 -070020985// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020986static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070020987_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020988{
Pablo Galindo800a35c62020-05-25 18:38:45 +010020989 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020990 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020991 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010020992 return NULL;
20993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010020994 asdl_seq * _res = NULL;
20995 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070020996 { // slice _loop0_94
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020997 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010020998 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030020999 return NULL;
21000 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021001 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 +010021002 expr_ty elem;
21003 asdl_seq * seq;
21004 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021005 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021006 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021007 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021008 )
21009 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021010 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 +010021011 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021012 goto done;
21013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021014 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021015 D(fprintf(stderr, "%*c%s _gather_93[%d-%d]: %s failed!\n", p->level, ' ',
21016 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice _loop0_94"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021018 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021019 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021020 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021021 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021022}
21023
Guido van Rossum3941d972020-05-01 09:42:03 -070021024// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021025static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021026_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021027{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021028 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021029 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021030 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021031 return NULL;
21032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021033 void * _res = NULL;
21034 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021035 { // ':' expression?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021036 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021037 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021038 return NULL;
21039 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021040 D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021041 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021042 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021043 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021044 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021045 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021046 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021047 )
21048 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021049 D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021050 _res = d;
21051 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021052 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021053 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021054 return NULL;
21055 }
21056 goto done;
21057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021058 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021059 D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ',
21060 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021062 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021063 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021064 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021065 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021066}
21067
Guido van Rossum3941d972020-05-01 09:42:03 -070021068// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021069static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021070_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021071{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021072 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021073 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021074 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021075 return NULL;
21076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021077 void * _res = NULL;
21078 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021079 { // tuple
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021080 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021081 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021082 return NULL;
21083 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021084 D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021085 expr_ty tuple_var;
21086 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021087 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021088 )
21089 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021090 D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021091 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021092 goto done;
21093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021094 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021095 D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ',
21096 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021097 }
21098 { // group
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021099 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021100 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021101 return NULL;
21102 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021103 D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021104 expr_ty group_var;
21105 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021106 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021107 )
21108 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021109 D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021110 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021111 goto done;
21112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021113 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021114 D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ',
21115 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021116 }
21117 { // genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021118 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021119 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021120 return NULL;
21121 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021122 D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021123 expr_ty genexp_var;
21124 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021125 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021126 )
21127 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021128 D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021129 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021130 goto done;
21131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021132 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021133 D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ',
21134 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021136 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021137 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021138 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021139 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021140}
21141
Guido van Rossum3941d972020-05-01 09:42:03 -070021142// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021143static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021144_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021145{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021146 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021147 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021148 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021149 return NULL;
21150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021151 void * _res = NULL;
21152 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021153 { // list
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021154 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021155 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021156 return NULL;
21157 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021158 D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021159 expr_ty list_var;
21160 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021161 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021162 )
21163 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021164 D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021165 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021166 goto done;
21167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021168 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021169 D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ',
21170 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021171 }
21172 { // listcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021173 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021174 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021175 return NULL;
21176 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021177 D(fprintf(stderr, "%*c> _tmp_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021178 expr_ty listcomp_var;
21179 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021180 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021181 )
21182 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021183 D(fprintf(stderr, "%*c+ _tmp_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021184 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021185 goto done;
21186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021187 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021188 D(fprintf(stderr, "%*c%s _tmp_97[%d-%d]: %s failed!\n", p->level, ' ',
21189 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021191 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021192 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021193 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021194 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021195}
21196
Guido van Rossum3941d972020-05-01 09:42:03 -070021197// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021198static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021199_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021200{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021201 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021202 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021203 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021204 return NULL;
21205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021206 void * _res = NULL;
21207 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021208 { // dict
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021209 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021210 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021211 return NULL;
21212 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021213 D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021214 expr_ty dict_var;
21215 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021216 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021217 )
21218 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021219 D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021220 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021221 goto done;
21222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021223 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021224 D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
21225 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021226 }
21227 { // set
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021228 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021229 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021230 return NULL;
21231 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021232 D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021233 expr_ty set_var;
21234 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021235 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021236 )
21237 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021238 D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021239 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021240 goto done;
21241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021242 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021243 D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
21244 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021245 }
21246 { // dictcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021247 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021248 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021249 return NULL;
21250 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021251 D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021252 expr_ty dictcomp_var;
21253 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021254 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021255 )
21256 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021257 D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021258 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021259 goto done;
21260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021261 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021262 D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
21263 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021264 }
21265 { // setcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021266 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021267 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021268 return NULL;
21269 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021270 D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021271 expr_ty setcomp_var;
21272 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021273 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021274 )
21275 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021276 D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021277 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021278 goto done;
21279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021280 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021281 D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
21282 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021284 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021285 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021286 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021287 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021288}
21289
Guido van Rossum3941d972020-05-01 09:42:03 -070021290// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021291static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021292_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021293{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021294 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021295 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021296 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021297 return NULL;
21298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021299 void *_res = NULL;
21300 int _mark = p->mark;
21301 int _start_mark = p->mark;
21302 void **_children = PyMem_Malloc(sizeof(void *));
21303 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021304 p->error_indicator = 1;
21305 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021306 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021307 return NULL;
21308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021309 ssize_t _children_capacity = 1;
21310 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021311 { // STRING
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021312 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021313 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021314 return NULL;
21315 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021316 D(fprintf(stderr, "%*c> _loop1_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021317 expr_ty string_var;
21318 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010021319 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021320 )
21321 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021322 _res = string_var;
21323 if (_n == _children_capacity) {
21324 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021325 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21326 if (!_new_children) {
21327 p->error_indicator = 1;
21328 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021329 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021330 return NULL;
21331 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021332 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021334 _children[_n++] = _res;
21335 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021337 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021338 D(fprintf(stderr, "%*c%s _loop1_99[%d-%d]: %s failed!\n", p->level, ' ',
21339 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021341 if (_n == 0 || p->error_indicator) {
21342 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021343 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021344 return NULL;
21345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021346 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21347 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021348 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021349 p->error_indicator = 1;
21350 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021351 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021352 return NULL;
21353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021354 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21355 PyMem_Free(_children);
21356 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021357 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021358 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021359}
21360
Guido van Rossum3941d972020-05-01 09:42:03 -070021361// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021362static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021363_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021364{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021365 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021366 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021367 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021368 return NULL;
21369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021370 void * _res = NULL;
21371 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021372 { // star_named_expression ',' star_named_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021373 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021374 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021375 return NULL;
21376 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021377 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 +010021378 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021379 expr_ty y;
21380 void *z;
21381 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021382 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021383 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021384 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021385 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021386 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021387 )
21388 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021389 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 +010021390 _res = _PyPegen_seq_insert_in_front ( p , y , z );
21391 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021392 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021393 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021394 return NULL;
21395 }
21396 goto done;
21397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021398 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021399 D(fprintf(stderr, "%*c%s _tmp_100[%d-%d]: %s failed!\n", p->level, ' ',
21400 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021402 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021403 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021404 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021405 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021406}
21407
Guido van Rossum3941d972020-05-01 09:42:03 -070021408// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021409static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021410_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021411{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021412 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021413 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021414 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021415 return NULL;
21416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021417 void * _res = NULL;
21418 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021419 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021420 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021421 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021422 return NULL;
21423 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021424 D(fprintf(stderr, "%*c> _tmp_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021425 expr_ty yield_expr_var;
21426 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021427 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021428 )
21429 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021430 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 +010021431 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021432 goto done;
21433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021434 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021435 D(fprintf(stderr, "%*c%s _tmp_101[%d-%d]: %s failed!\n", p->level, ' ',
21436 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021437 }
21438 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021439 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021440 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021441 return NULL;
21442 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021443 D(fprintf(stderr, "%*c> _tmp_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021444 expr_ty named_expression_var;
21445 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021446 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021447 )
21448 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021449 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 +010021450 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021451 goto done;
21452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021453 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021454 D(fprintf(stderr, "%*c%s _tmp_101[%d-%d]: %s failed!\n", p->level, ' ',
21455 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021457 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021458 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021459 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021460 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021461}
21462
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021463// _loop0_103: ',' double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021464static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021465_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021466{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021467 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021468 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021469 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021470 return NULL;
21471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021472 void *_res = NULL;
21473 int _mark = p->mark;
21474 int _start_mark = p->mark;
21475 void **_children = PyMem_Malloc(sizeof(void *));
21476 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021477 p->error_indicator = 1;
21478 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021479 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021480 return NULL;
21481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021482 ssize_t _children_capacity = 1;
21483 ssize_t _n = 0;
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021484 { // ',' double_starred_kvpair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021485 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021486 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021487 return NULL;
21488 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021489 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 +010021490 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021491 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021492 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021493 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021494 &&
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021495 (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021496 )
21497 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021498 _res = elem;
21499 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021500 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021501 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021502 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021503 return NULL;
21504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021505 if (_n == _children_capacity) {
21506 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021507 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21508 if (!_new_children) {
21509 p->error_indicator = 1;
21510 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021511 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021512 return NULL;
21513 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021514 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021516 _children[_n++] = _res;
21517 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021519 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021520 D(fprintf(stderr, "%*c%s _loop0_103[%d-%d]: %s failed!\n", p->level, ' ',
21521 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021523 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21524 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021525 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021526 p->error_indicator = 1;
21527 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021528 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021529 return NULL;
21530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021531 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21532 PyMem_Free(_children);
21533 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021534 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021535 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021536}
21537
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021538// _gather_102: double_starred_kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021539static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021540_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021541{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021542 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021543 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021544 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021545 return NULL;
21546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021547 asdl_seq * _res = NULL;
21548 int _mark = p->mark;
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021549 { // double_starred_kvpair _loop0_103
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021550 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021551 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021552 return NULL;
21553 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021554 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 +010021555 KeyValuePair* elem;
21556 asdl_seq * seq;
21557 if (
Batuhan Taskayab8a65ec2020-05-22 01:39:56 +030021558 (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021559 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021560 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021561 )
21562 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021563 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 +010021564 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021565 goto done;
21566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021567 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021568 D(fprintf(stderr, "%*c%s _gather_102[%d-%d]: %s failed!\n", p->level, ' ',
21569 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_103"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021571 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021572 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021573 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021574 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021575}
21576
Guido van Rossum3941d972020-05-01 09:42:03 -070021577// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021578static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021579_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021580{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021581 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021582 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021583 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021584 return NULL;
21585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021586 void *_res = NULL;
21587 int _mark = p->mark;
21588 int _start_mark = p->mark;
21589 void **_children = PyMem_Malloc(sizeof(void *));
21590 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021591 p->error_indicator = 1;
21592 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021593 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021594 return NULL;
21595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021596 ssize_t _children_capacity = 1;
21597 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021598 { // for_if_clause
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021599 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021600 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021601 return NULL;
21602 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021603 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 +030021604 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021605 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010021606 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021607 )
21608 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021609 _res = for_if_clause_var;
21610 if (_n == _children_capacity) {
21611 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021612 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21613 if (!_new_children) {
21614 p->error_indicator = 1;
21615 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021616 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021617 return NULL;
21618 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021619 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021621 _children[_n++] = _res;
21622 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021624 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021625 D(fprintf(stderr, "%*c%s _loop1_104[%d-%d]: %s failed!\n", p->level, ' ',
21626 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021628 if (_n == 0 || p->error_indicator) {
21629 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021630 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021631 return NULL;
21632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021633 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21634 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021635 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021636 p->error_indicator = 1;
21637 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021638 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021639 return NULL;
21640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021641 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21642 PyMem_Free(_children);
21643 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021644 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021645 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010021646}
21647
Guido van Rossum3941d972020-05-01 09:42:03 -070021648// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010021649static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021650_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010021651{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021652 D(p->level++);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021653 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021654 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021655 return NULL;
21656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021657 void *_res = NULL;
21658 int _mark = p->mark;
21659 int _start_mark = p->mark;
21660 void **_children = PyMem_Malloc(sizeof(void *));
21661 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021662 p->error_indicator = 1;
21663 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021664 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021665 return NULL;
21666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021667 ssize_t _children_capacity = 1;
21668 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021669 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021670 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021671 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021672 return NULL;
21673 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021674 D(fprintf(stderr, "%*c> _loop0_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010021675 void *_tmp_146_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010021676 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010021677 (_tmp_146_var = _tmp_146_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010021678 )
21679 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010021680 _res = _tmp_146_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021681 if (_n == _children_capacity) {
21682 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021683 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21684 if (!_new_children) {
21685 p->error_indicator = 1;
21686 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021687 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021688 return NULL;
21689 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021690 _children = _new_children;
Pablo Galindo2b74c832020-04-27 18:02:07 +010021691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021692 _children[_n++] = _res;
21693 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010021694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021695 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021696 D(fprintf(stderr, "%*c%s _loop0_105[%d-%d]: %s failed!\n", p->level, ' ',
21697 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
Pablo Galindo2b74c832020-04-27 18:02:07 +010021698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021699 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21700 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021701 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021702 p->error_indicator = 1;
21703 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021704 D(p->level--);
Pablo Galindo2b74c832020-04-27 18:02:07 +010021705 return NULL;
21706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021707 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21708 PyMem_Free(_children);
21709 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021710 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021711 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010021712}
21713
Guido van Rossum3941d972020-05-01 09:42:03 -070021714// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070021715static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070021716_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070021717{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021718 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070021719 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021720 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070021721 return NULL;
21722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021723 void *_res = NULL;
21724 int _mark = p->mark;
21725 int _start_mark = p->mark;
21726 void **_children = PyMem_Malloc(sizeof(void *));
21727 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021728 p->error_indicator = 1;
21729 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021730 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021731 return NULL;
21732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021733 ssize_t _children_capacity = 1;
21734 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021735 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021736 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021737 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021738 return NULL;
21739 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021740 D(fprintf(stderr, "%*c> _loop0_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010021741 void *_tmp_147_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021742 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010021743 (_tmp_147_var = _tmp_147_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070021744 )
21745 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010021746 _res = _tmp_147_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021747 if (_n == _children_capacity) {
21748 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021749 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21750 if (!_new_children) {
21751 p->error_indicator = 1;
21752 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021753 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021754 return NULL;
21755 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021756 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021758 _children[_n++] = _res;
21759 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021761 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021762 D(fprintf(stderr, "%*c%s _loop0_106[%d-%d]: %s failed!\n", p->level, ' ',
21763 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021765 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21766 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021767 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021768 p->error_indicator = 1;
21769 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021770 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021771 return NULL;
21772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021773 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21774 PyMem_Free(_children);
21775 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021776 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021777 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021778}
21779
Guido van Rossum3941d972020-05-01 09:42:03 -070021780// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021781static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021782_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021783{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021784 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021785 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021786 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021787 return NULL;
21788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021789 void * _res = NULL;
21790 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021791 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021792 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021793 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021794 return NULL;
21795 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021796 D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021797 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021798 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021799 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021800 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021801 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021802 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021803 )
21804 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021805 D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021806 _res = c;
21807 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021808 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021809 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021810 return NULL;
21811 }
Guido van Rossumc001c092020-04-30 12:12:19 -070021812 goto done;
21813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021814 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021815 D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
21816 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' args"));
Guido van Rossumc001c092020-04-30 12:12:19 -070021817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021818 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070021819 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021820 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021821 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070021822}
21823
Guido van Rossum3941d972020-05-01 09:42:03 -070021824// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021825static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070021826_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021827{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021828 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021829 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021830 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021831 return NULL;
21832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021833 void * _res = NULL;
21834 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021835 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021836 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021837 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021838 return NULL;
21839 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021840 D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021841 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021842 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021843 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021844 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021845 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021846 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021847 )
21848 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021849 D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021850 _res = c;
21851 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021852 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021853 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021854 return NULL;
21855 }
21856 goto done;
21857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021858 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021859 D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ',
21860 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' args"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021862 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021863 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021864 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021865 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030021866}
21867
Guido van Rossum3941d972020-05-01 09:42:03 -070021868// _loop0_110: ',' kwarg_or_starred
21869static asdl_seq *
21870_loop0_110_rule(Parser *p)
21871{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021872 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070021873 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021874 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021875 return NULL;
21876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021877 void *_res = NULL;
21878 int _mark = p->mark;
21879 int _start_mark = p->mark;
21880 void **_children = PyMem_Malloc(sizeof(void *));
21881 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021882 p->error_indicator = 1;
21883 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021884 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021885 return NULL;
21886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021887 ssize_t _children_capacity = 1;
21888 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070021889 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021890 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021891 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021892 return NULL;
21893 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021894 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 +010021895 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070021896 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070021897 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021898 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070021899 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021900 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070021901 )
21902 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021903 _res = elem;
21904 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070021905 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021906 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021907 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021908 return NULL;
21909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021910 if (_n == _children_capacity) {
21911 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021912 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21913 if (!_new_children) {
21914 p->error_indicator = 1;
21915 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021916 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021917 return NULL;
21918 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021919 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070021920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021921 _children[_n++] = _res;
21922 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070021923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021924 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021925 D(fprintf(stderr, "%*c%s _loop0_110[%d-%d]: %s failed!\n", p->level, ' ',
21926 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
Guido van Rossum3941d972020-05-01 09:42:03 -070021927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021928 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
21929 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021930 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021931 p->error_indicator = 1;
21932 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021933 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021934 return NULL;
21935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021936 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
21937 PyMem_Free(_children);
21938 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010021939 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021940 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070021941}
21942
21943// _gather_109: kwarg_or_starred _loop0_110
21944static asdl_seq *
21945_gather_109_rule(Parser *p)
21946{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021947 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070021948 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021949 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021950 return NULL;
21951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021952 asdl_seq * _res = NULL;
21953 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070021954 { // kwarg_or_starred _loop0_110
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021955 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021956 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030021957 return NULL;
21958 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010021959 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 -070021960 KeywordOrStarred* elem;
21961 asdl_seq * seq;
21962 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010021963 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070021964 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010021965 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070021966 )
21967 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021968 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 +010021969 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070021970 goto done;
21971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021972 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010021973 D(fprintf(stderr, "%*c%s _gather_109[%d-%d]: %s failed!\n", p->level, ' ',
21974 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_110"));
Guido van Rossum3941d972020-05-01 09:42:03 -070021975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021976 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070021977 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010021978 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021979 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070021980}
21981
21982// _loop0_112: ',' kwarg_or_double_starred
21983static asdl_seq *
21984_loop0_112_rule(Parser *p)
21985{
Pablo Galindo800a35c62020-05-25 18:38:45 +010021986 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070021987 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010021988 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021989 return NULL;
21990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010021991 void *_res = NULL;
21992 int _mark = p->mark;
21993 int _start_mark = p->mark;
21994 void **_children = PyMem_Malloc(sizeof(void *));
21995 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030021996 p->error_indicator = 1;
21997 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010021998 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070021999 return NULL;
22000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022001 ssize_t _children_capacity = 1;
22002 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070022003 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022004 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022005 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022006 return NULL;
22007 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022008 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 +010022009 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070022010 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070022011 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022012 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070022013 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022014 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070022015 )
22016 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022017 _res = elem;
22018 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070022019 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022020 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022021 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022022 return NULL;
22023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022024 if (_n == _children_capacity) {
22025 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022026 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22027 if (!_new_children) {
22028 p->error_indicator = 1;
22029 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022030 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022031 return NULL;
22032 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022033 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070022034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022035 _children[_n++] = _res;
22036 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022038 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022039 D(fprintf(stderr, "%*c%s _loop0_112[%d-%d]: %s failed!\n", p->level, ' ',
22040 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
Guido van Rossum3941d972020-05-01 09:42:03 -070022041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022042 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22043 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022044 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022045 p->error_indicator = 1;
22046 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022047 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022048 return NULL;
22049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022050 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22051 PyMem_Free(_children);
22052 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022053 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022054 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070022055}
22056
22057// _gather_111: kwarg_or_double_starred _loop0_112
22058static asdl_seq *
22059_gather_111_rule(Parser *p)
22060{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022061 D(p->level++);
Guido van Rossum3941d972020-05-01 09:42:03 -070022062 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022063 D(p->level--);
Guido van Rossum3941d972020-05-01 09:42:03 -070022064 return NULL;
22065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022066 asdl_seq * _res = NULL;
22067 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022068 { // kwarg_or_double_starred _loop0_112
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022069 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022070 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022071 return NULL;
22072 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022073 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 -070022074 KeywordOrStarred* elem;
22075 asdl_seq * seq;
22076 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022077 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070022078 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022079 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070022080 )
22081 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022082 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 +010022083 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070022084 goto done;
22085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022086 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022087 D(fprintf(stderr, "%*c%s _gather_111[%d-%d]: %s failed!\n", p->level, ' ',
22088 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_112"));
Guido van Rossum3941d972020-05-01 09:42:03 -070022089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022090 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070022091 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022092 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022093 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070022094}
22095
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022096// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010022097static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022098_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022099{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022100 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022101 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022102 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022103 return NULL;
22104 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022105 void *_res = NULL;
22106 int _mark = p->mark;
22107 int _start_mark = p->mark;
22108 void **_children = PyMem_Malloc(sizeof(void *));
22109 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022110 p->error_indicator = 1;
22111 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022112 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022113 return NULL;
22114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022115 ssize_t _children_capacity = 1;
22116 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070022117 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022118 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022119 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022120 return NULL;
22121 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022122 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 +010022123 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070022124 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070022125 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022126 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070022127 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022128 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022129 )
22130 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022131 _res = elem;
22132 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070022133 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022134 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022135 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022136 return NULL;
22137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022138 if (_n == _children_capacity) {
22139 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022140 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22141 if (!_new_children) {
22142 p->error_indicator = 1;
22143 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022144 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022145 return NULL;
22146 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022147 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070022148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022149 _children[_n++] = _res;
22150 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070022151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022152 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022153 D(fprintf(stderr, "%*c%s _loop0_114[%d-%d]: %s failed!\n", p->level, ' ',
22154 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022156 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22157 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022158 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022159 p->error_indicator = 1;
22160 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022161 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022162 return NULL;
22163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022164 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22165 PyMem_Free(_children);
22166 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022167 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022168 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070022169}
22170
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022171// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070022172static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022173_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070022174{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022175 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070022176 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022177 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022178 return NULL;
22179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022180 asdl_seq * _res = NULL;
22181 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022182 { // kwarg_or_starred _loop0_114
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022183 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022184 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022185 return NULL;
22186 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022187 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 -070022188 KeywordOrStarred* elem;
22189 asdl_seq * seq;
22190 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022191 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022193 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070022194 )
22195 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022196 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 +010022197 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070022198 goto done;
22199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022200 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022201 D(fprintf(stderr, "%*c%s _gather_113[%d-%d]: %s failed!\n", p->level, ' ',
22202 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_114"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022204 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070022205 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022206 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022207 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070022208}
22209
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022210// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022211static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022212_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070022213{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022214 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070022215 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022216 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022217 return NULL;
22218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022219 void *_res = NULL;
22220 int _mark = p->mark;
22221 int _start_mark = p->mark;
22222 void **_children = PyMem_Malloc(sizeof(void *));
22223 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022224 p->error_indicator = 1;
22225 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022226 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022227 return NULL;
22228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022229 ssize_t _children_capacity = 1;
22230 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070022231 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022232 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022233 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022234 return NULL;
22235 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022236 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 +010022237 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070022238 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070022239 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022240 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070022241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022242 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022243 )
22244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022245 _res = elem;
22246 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070022247 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022248 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022249 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022250 return NULL;
22251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022252 if (_n == _children_capacity) {
22253 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022254 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22255 if (!_new_children) {
22256 p->error_indicator = 1;
22257 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022258 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022259 return NULL;
22260 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022261 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070022262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022263 _children[_n++] = _res;
22264 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070022265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022266 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022267 D(fprintf(stderr, "%*c%s _loop0_116[%d-%d]: %s failed!\n", p->level, ' ',
22268 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022270 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22271 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022272 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022273 p->error_indicator = 1;
22274 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022275 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022276 return NULL;
22277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022278 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22279 PyMem_Free(_children);
22280 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022281 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022282 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070022283}
22284
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022285// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070022286static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022287_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070022288{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022289 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070022290 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022291 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022292 return NULL;
22293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022294 asdl_seq * _res = NULL;
22295 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022296 { // kwarg_or_double_starred _loop0_116
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022297 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022298 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022299 return NULL;
22300 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022301 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 -070022302 KeywordOrStarred* elem;
22303 asdl_seq * seq;
22304 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022305 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070022306 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022307 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070022308 )
22309 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022310 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 +010022311 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070022312 goto done;
22313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022314 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022315 D(fprintf(stderr, "%*c%s _gather_115[%d-%d]: %s failed!\n", p->level, ' ',
22316 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_116"));
Guido van Rossumc001c092020-04-30 12:12:19 -070022317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022318 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070022319 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022320 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022321 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070022322}
22323
Guido van Rossum3941d972020-05-01 09:42:03 -070022324// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070022325static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022326_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022327{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022328 D(p->level++);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022329 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022330 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022331 return NULL;
22332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022333 void *_res = NULL;
22334 int _mark = p->mark;
22335 int _start_mark = p->mark;
22336 void **_children = PyMem_Malloc(sizeof(void *));
22337 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022338 p->error_indicator = 1;
22339 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022340 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022341 return NULL;
22342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022343 ssize_t _children_capacity = 1;
22344 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022345 { // (',' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022346 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022347 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022348 return NULL;
22349 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022350 D(fprintf(stderr, "%*c> _loop0_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010022351 void *_tmp_148_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022352 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010022353 (_tmp_148_var = _tmp_148_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022354 )
22355 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010022356 _res = _tmp_148_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022357 if (_n == _children_capacity) {
22358 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022359 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22360 if (!_new_children) {
22361 p->error_indicator = 1;
22362 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022363 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022364 return NULL;
22365 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022366 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022368 _children[_n++] = _res;
22369 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022371 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022372 D(fprintf(stderr, "%*c%s _loop0_117[%d-%d]: %s failed!\n", p->level, ' ',
22373 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022375 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22376 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022377 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022378 p->error_indicator = 1;
22379 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022380 D(p->level--);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022381 return NULL;
22382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022383 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22384 PyMem_Free(_children);
22385 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022386 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022387 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022388}
22389
Guido van Rossum3941d972020-05-01 09:42:03 -070022390// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030022391static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022392_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070022393{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022394 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070022395 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022396 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022397 return NULL;
22398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022399 void *_res = NULL;
22400 int _mark = p->mark;
22401 int _start_mark = p->mark;
22402 void **_children = PyMem_Malloc(sizeof(void *));
22403 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022404 p->error_indicator = 1;
22405 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022406 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070022407 return NULL;
22408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022409 ssize_t _children_capacity = 1;
22410 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022411 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022412 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022413 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022414 return NULL;
22415 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022416 D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022417 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022418 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022419 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022420 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022421 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022422 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022423 )
22424 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022425 _res = elem;
22426 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022427 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022428 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022429 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022430 return NULL;
22431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022432 if (_n == _children_capacity) {
22433 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022434 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22435 if (!_new_children) {
22436 p->error_indicator = 1;
22437 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022438 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022439 return NULL;
22440 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022441 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022443 _children[_n++] = _res;
22444 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022446 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022447 D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ',
22448 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022450 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22451 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022452 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022453 p->error_indicator = 1;
22454 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022455 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022456 return NULL;
22457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022458 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22459 PyMem_Free(_children);
22460 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022461 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022462 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022463}
22464
Guido van Rossum3941d972020-05-01 09:42:03 -070022465// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022466static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022467_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022468{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022469 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022470 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022471 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022472 return NULL;
22473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022474 asdl_seq * _res = NULL;
22475 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022476 { // star_target _loop0_119
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022477 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022478 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022479 return NULL;
22480 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022481 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 +010022482 expr_ty elem;
22483 asdl_seq * seq;
22484 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022485 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022486 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022487 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022488 )
22489 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022490 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 +010022491 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022492 goto done;
22493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022494 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022495 D(fprintf(stderr, "%*c%s _gather_118[%d-%d]: %s failed!\n", p->level, ' ',
22496 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_119"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022498 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022499 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022500 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022501 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022502}
22503
Guido van Rossum3941d972020-05-01 09:42:03 -070022504// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022505static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070022506_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022507{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022508 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022509 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022510 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022511 return NULL;
22512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022513 void * _res = NULL;
22514 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022515 { // !'*' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022516 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022517 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022518 return NULL;
22519 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022520 D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022521 expr_ty star_target_var;
22522 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022523 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022524 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022525 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022526 )
22527 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022528 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 +010022529 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022530 goto done;
22531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022532 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022533 D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
22534 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022536 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022537 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022538 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022539 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022540}
22541
Guido van Rossum3941d972020-05-01 09:42:03 -070022542// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022543static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022544_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022545{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022546 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022547 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022548 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022549 return NULL;
22550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022551 void *_res = NULL;
22552 int _mark = p->mark;
22553 int _start_mark = p->mark;
22554 void **_children = PyMem_Malloc(sizeof(void *));
22555 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022556 p->error_indicator = 1;
22557 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022558 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022559 return NULL;
22560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022561 ssize_t _children_capacity = 1;
22562 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022563 { // ',' del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022564 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022565 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022566 return NULL;
22567 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022568 D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022569 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022570 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022571 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022572 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022573 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022574 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022575 )
22576 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022577 _res = elem;
22578 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022579 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022580 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022581 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022582 return NULL;
22583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022584 if (_n == _children_capacity) {
22585 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022586 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22587 if (!_new_children) {
22588 p->error_indicator = 1;
22589 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022590 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022591 return NULL;
22592 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022593 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022595 _children[_n++] = _res;
22596 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022598 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022599 D(fprintf(stderr, "%*c%s _loop0_122[%d-%d]: %s failed!\n", p->level, ' ',
22600 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022602 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22603 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022604 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022605 p->error_indicator = 1;
22606 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022607 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022608 return NULL;
22609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022610 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22611 PyMem_Free(_children);
22612 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022613 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022614 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022615}
22616
Guido van Rossum3941d972020-05-01 09:42:03 -070022617// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022618static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022619_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022620{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022621 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022622 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022623 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022624 return NULL;
22625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022626 asdl_seq * _res = NULL;
22627 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022628 { // del_target _loop0_122
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022629 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022630 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022631 return NULL;
22632 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022633 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 +010022634 expr_ty elem;
22635 asdl_seq * seq;
22636 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022637 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022638 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022639 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022640 )
22641 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022642 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 +010022643 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022644 goto done;
22645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022646 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022647 D(fprintf(stderr, "%*c%s _gather_121[%d-%d]: %s failed!\n", p->level, ' ',
22648 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_122"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022650 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022651 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022652 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022653 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022654}
22655
Guido van Rossum3941d972020-05-01 09:42:03 -070022656// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022657static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022658_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022659{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022660 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022661 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022662 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022663 return NULL;
22664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022665 void *_res = NULL;
22666 int _mark = p->mark;
22667 int _start_mark = p->mark;
22668 void **_children = PyMem_Malloc(sizeof(void *));
22669 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022670 p->error_indicator = 1;
22671 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022672 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022673 return NULL;
22674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022675 ssize_t _children_capacity = 1;
22676 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022677 { // ',' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022678 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022679 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022680 return NULL;
22681 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022682 D(fprintf(stderr, "%*c> _loop0_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022683 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022684 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022685 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022686 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022687 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022688 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022689 )
22690 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022691 _res = elem;
22692 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022693 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022694 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022695 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022696 return NULL;
22697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022698 if (_n == _children_capacity) {
22699 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022700 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22701 if (!_new_children) {
22702 p->error_indicator = 1;
22703 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022704 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022705 return NULL;
22706 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022707 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022709 _children[_n++] = _res;
22710 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022712 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022713 D(fprintf(stderr, "%*c%s _loop0_124[%d-%d]: %s failed!\n", p->level, ' ',
22714 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022716 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22717 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022718 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022719 p->error_indicator = 1;
22720 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022721 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022722 return NULL;
22723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022724 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22725 PyMem_Free(_children);
22726 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022727 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022728 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022729}
22730
Guido van Rossum3941d972020-05-01 09:42:03 -070022731// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022732static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070022733_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022734{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022735 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022736 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022737 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022738 return NULL;
22739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022740 asdl_seq * _res = NULL;
22741 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070022742 { // target _loop0_124
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022743 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022744 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022745 return NULL;
22746 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022747 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 +010022748 expr_ty elem;
22749 asdl_seq * seq;
22750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022751 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022752 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022753 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022754 )
22755 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022756 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 +010022757 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022758 goto done;
22759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022760 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022761 D(fprintf(stderr, "%*c%s _gather_123[%d-%d]: %s failed!\n", p->level, ' ',
22762 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target _loop0_124"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022764 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022765 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022766 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022767 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022768}
22769
Guido van Rossum3941d972020-05-01 09:42:03 -070022770// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022771static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070022772_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022773{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022774 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022775 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022776 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022777 return NULL;
22778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022779 void * _res = NULL;
22780 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022781 { // args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022782 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022783 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022784 return NULL;
22785 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022786 D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022787 expr_ty args_var;
22788 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022789 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022790 )
22791 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022792 D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022793 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022794 goto done;
22795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022796 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022797 D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
22798 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022799 }
22800 { // expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022801 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022802 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022803 return NULL;
22804 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022805 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 +010022806 expr_ty expression_var;
22807 asdl_seq* for_if_clauses_var;
22808 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010022809 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022810 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022811 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022812 )
22813 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022814 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 +010022815 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022816 goto done;
22817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022818 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022819 D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
22820 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022822 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022823 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022824 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022825 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022826}
22827
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022828// _loop0_126: star_named_expressions
22829static asdl_seq *
22830_loop0_126_rule(Parser *p)
22831{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022832 D(p->level++);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022833 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022834 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022835 return NULL;
22836 }
22837 void *_res = NULL;
22838 int _mark = p->mark;
22839 int _start_mark = p->mark;
22840 void **_children = PyMem_Malloc(sizeof(void *));
22841 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022842 p->error_indicator = 1;
22843 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022844 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022845 return NULL;
22846 }
22847 ssize_t _children_capacity = 1;
22848 ssize_t _n = 0;
22849 { // star_named_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022850 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022851 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022852 return NULL;
22853 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022854 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 +030022855 asdl_seq* star_named_expressions_var;
22856 while (
22857 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
22858 )
22859 {
22860 _res = star_named_expressions_var;
22861 if (_n == _children_capacity) {
22862 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022863 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22864 if (!_new_children) {
22865 p->error_indicator = 1;
22866 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022867 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022868 return NULL;
22869 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022870 _children = _new_children;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022871 }
22872 _children[_n++] = _res;
22873 _mark = p->mark;
22874 }
22875 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022876 D(fprintf(stderr, "%*c%s _loop0_126[%d-%d]: %s failed!\n", p->level, ' ',
22877 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022878 }
22879 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22880 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022881 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030022882 p->error_indicator = 1;
22883 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010022884 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022885 return NULL;
22886 }
22887 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22888 PyMem_Free(_children);
22889 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022890 D(p->level--);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022891 return _seq;
22892}
22893
22894// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022895static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030022896_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022897{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022898 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022899 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022900 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022901 return NULL;
22902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022903 void * _res = NULL;
22904 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022905 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022906 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022907 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022908 return NULL;
22909 }
Pablo Galindo800a35c62020-05-25 18:38:45 +010022910 D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022911 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022912 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022913 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022914 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022915 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010022916 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022917 )
22918 {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022919 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 +010022920 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022921 goto done;
22922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022923 p->mark = _mark;
Pablo Galindo800a35c62020-05-25 18:38:45 +010022924 D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
22925 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022927 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022928 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010022929 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022930 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022931}
22932
Pablo Galindo9f495902020-06-08 02:57:00 +010022933// _loop0_128: (star_targets '=')
22934static asdl_seq *
22935_loop0_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022936{
Pablo Galindo800a35c62020-05-25 18:38:45 +010022937 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022938 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022939 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022940 return NULL;
22941 }
Pablo Galindo9f495902020-06-08 02:57:00 +010022942 void *_res = NULL;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022943 int _mark = p->mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010022944 int _start_mark = p->mark;
22945 void **_children = PyMem_Malloc(sizeof(void *));
22946 if (!_children) {
22947 p->error_indicator = 1;
22948 PyErr_NoMemory();
22949 D(p->level--);
22950 return NULL;
22951 }
22952 ssize_t _children_capacity = 1;
22953 ssize_t _n = 0;
22954 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022955 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010022956 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030022957 return NULL;
22958 }
Pablo Galindo9f495902020-06-08 02:57:00 +010022959 D(fprintf(stderr, "%*c> _loop0_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010022960 void *_tmp_149_var;
Pablo Galindo9f495902020-06-08 02:57:00 +010022961 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010022962 (_tmp_149_var = _tmp_149_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022963 )
22964 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010022965 _res = _tmp_149_var;
Pablo Galindo9f495902020-06-08 02:57:00 +010022966 if (_n == _children_capacity) {
22967 _children_capacity *= 2;
22968 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22969 if (!_new_children) {
22970 p->error_indicator = 1;
22971 PyErr_NoMemory();
22972 D(p->level--);
22973 return NULL;
22974 }
22975 _children = _new_children;
22976 }
22977 _children[_n++] = _res;
22978 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010022980 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010022981 D(fprintf(stderr, "%*c%s _loop0_128[%d-%d]: %s failed!\n", p->level, ' ',
22982 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022983 }
Pablo Galindo9f495902020-06-08 02:57:00 +010022984 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
22985 if (!_seq) {
22986 PyMem_Free(_children);
22987 p->error_indicator = 1;
22988 PyErr_NoMemory();
22989 D(p->level--);
22990 return NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022991 }
Pablo Galindo9f495902020-06-08 02:57:00 +010022992 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
22993 PyMem_Free(_children);
22994 _PyPegen_insert_memo(p, _start_mark, _loop0_128_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010022995 D(p->level--);
Pablo Galindo9f495902020-06-08 02:57:00 +010022996 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010022997}
22998
Pablo Galindo9f495902020-06-08 02:57:00 +010022999// _loop0_129: (star_targets '=')
23000static asdl_seq *
23001_loop0_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023002{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023003 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023004 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023005 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023006 return NULL;
23007 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023008 void *_res = NULL;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023009 int _mark = p->mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023010 int _start_mark = p->mark;
23011 void **_children = PyMem_Malloc(sizeof(void *));
23012 if (!_children) {
23013 p->error_indicator = 1;
23014 PyErr_NoMemory();
23015 D(p->level--);
23016 return NULL;
23017 }
23018 ssize_t _children_capacity = 1;
23019 ssize_t _n = 0;
23020 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023021 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023022 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023023 return NULL;
23024 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023025 D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc6483c92020-06-10 14:07:06 +010023026 void *_tmp_150_var;
Pablo Galindo9f495902020-06-08 02:57:00 +010023027 while (
Pablo Galindoc6483c92020-06-10 14:07:06 +010023028 (_tmp_150_var = _tmp_150_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023029 )
23030 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023031 _res = _tmp_150_var;
Pablo Galindo9f495902020-06-08 02:57:00 +010023032 if (_n == _children_capacity) {
23033 _children_capacity *= 2;
23034 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23035 if (!_new_children) {
23036 p->error_indicator = 1;
23037 PyErr_NoMemory();
23038 D(p->level--);
23039 return NULL;
23040 }
23041 _children = _new_children;
23042 }
23043 _children[_n++] = _res;
23044 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023046 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023047 D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ',
23048 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023049 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023050 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
23051 if (!_seq) {
23052 PyMem_Free(_children);
23053 p->error_indicator = 1;
23054 PyErr_NoMemory();
23055 D(p->level--);
23056 return NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023057 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023058 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
23059 PyMem_Free(_children);
23060 _PyPegen_insert_memo(p, _start_mark, _loop0_129_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010023061 D(p->level--);
Pablo Galindo9f495902020-06-08 02:57:00 +010023062 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023063}
23064
Pablo Galindo9f495902020-06-08 02:57:00 +010023065// _tmp_130: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023066static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030023067_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023068{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023069 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023070 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023071 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023072 return NULL;
23073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023074 void * _res = NULL;
23075 int _mark = p->mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023076 { // yield_expr
23077 if (p->error_indicator) {
23078 D(p->level--);
23079 return NULL;
23080 }
23081 D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23082 expr_ty yield_expr_var;
23083 if (
23084 (yield_expr_var = yield_expr_rule(p)) // yield_expr
23085 )
23086 {
23087 D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23088 _res = yield_expr_var;
23089 goto done;
23090 }
23091 p->mark = _mark;
23092 D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ',
23093 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
23094 }
23095 { // star_expressions
23096 if (p->error_indicator) {
23097 D(p->level--);
23098 return NULL;
23099 }
23100 D(fprintf(stderr, "%*c> _tmp_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
23101 expr_ty star_expressions_var;
23102 if (
23103 (star_expressions_var = star_expressions_rule(p)) // star_expressions
23104 )
23105 {
23106 D(fprintf(stderr, "%*c+ _tmp_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
23107 _res = star_expressions_var;
23108 goto done;
23109 }
23110 p->mark = _mark;
23111 D(fprintf(stderr, "%*c%s _tmp_130[%d-%d]: %s failed!\n", p->level, ' ',
23112 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
23113 }
23114 _res = NULL;
23115 done:
23116 D(p->level--);
23117 return _res;
23118}
23119
23120// _tmp_131: '[' | '(' | '{'
23121static void *
23122_tmp_131_rule(Parser *p)
23123{
23124 D(p->level++);
23125 if (p->error_indicator) {
23126 D(p->level--);
23127 return NULL;
23128 }
23129 void * _res = NULL;
23130 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023131 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023132 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023133 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023134 return NULL;
23135 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023136 D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023137 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023138 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023139 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023140 )
23141 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023142 D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023143 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023144 goto done;
23145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023146 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023147 D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023148 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023149 }
23150 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023151 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023152 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023153 return NULL;
23154 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023155 D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023156 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023157 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023158 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023159 )
23160 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023161 D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023162 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023163 goto done;
23164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023165 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023166 D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023167 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023168 }
23169 { // '{'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023170 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023171 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023172 return NULL;
23173 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023174 D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023175 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023176 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023177 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023178 )
23179 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023180 D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023181 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023182 goto done;
23183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023184 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023185 D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023186 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023188 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023189 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023190 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023191 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023192}
23193
Pablo Galindo9f495902020-06-08 02:57:00 +010023194// _loop0_132: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070023195static asdl_seq *
Pablo Galindo9f495902020-06-08 02:57:00 +010023196_loop0_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023197{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023198 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023199 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023200 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023201 return NULL;
23202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023203 void *_res = NULL;
23204 int _mark = p->mark;
23205 int _start_mark = p->mark;
23206 void **_children = PyMem_Malloc(sizeof(void *));
23207 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030023208 p->error_indicator = 1;
23209 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010023210 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070023211 return NULL;
23212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023213 ssize_t _children_capacity = 1;
23214 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070023215 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023216 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023217 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023218 return NULL;
23219 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023220 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 -070023221 arg_ty param_no_default_var;
23222 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010023223 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023224 )
23225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023226 _res = param_no_default_var;
23227 if (_n == _children_capacity) {
23228 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030023229 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23230 if (!_new_children) {
23231 p->error_indicator = 1;
23232 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010023233 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070023234 return NULL;
23235 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030023236 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070023237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023238 _children[_n++] = _res;
23239 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023241 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023242 D(fprintf(stderr, "%*c%s _loop0_132[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023243 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023245 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
23246 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023247 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030023248 p->error_indicator = 1;
23249 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010023250 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070023251 return NULL;
23252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023253 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
23254 PyMem_Free(_children);
Pablo Galindo9f495902020-06-08 02:57:00 +010023255 _PyPegen_insert_memo(p, _start_mark, _loop0_132_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010023256 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023257 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023258}
23259
Pablo Galindo9f495902020-06-08 02:57:00 +010023260// _tmp_133: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023261static void *
Pablo Galindo9f495902020-06-08 02:57:00 +010023262_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023263{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023264 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023265 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023266 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023267 return NULL;
23268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023269 void * _res = NULL;
23270 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023271 { // slash_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023272 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023273 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023274 return NULL;
23275 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023276 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 +010023277 SlashWithDefault* slash_with_default_var;
23278 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010023279 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023280 )
23281 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023282 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 +010023283 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023284 goto done;
23285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023286 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023287 D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023288 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023289 }
Guido van Rossumc001c092020-04-30 12:12:19 -070023290 { // param_with_default+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023291 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023292 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023293 return NULL;
23294 }
Pablo Galindo9f495902020-06-08 02:57:00 +010023295 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 +010023296 asdl_seq * _loop1_151_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023297 if (
Pablo Galindoc6483c92020-06-10 14:07:06 +010023298 (_loop1_151_var = _loop1_151_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023299 )
23300 {
Pablo Galindo9f495902020-06-08 02:57:00 +010023301 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 +010023302 _res = _loop1_151_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023303 goto done;
23304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023305 p->mark = _mark;
Pablo Galindo9f495902020-06-08 02:57:00 +010023306 D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023307 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023309 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023310 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023311 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023312 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023313}
23314
Pablo Galindoc6483c92020-06-10 14:07:06 +010023315// _loop0_134: lambda_param_no_default
23316static asdl_seq *
23317_loop0_134_rule(Parser *p)
23318{
23319 D(p->level++);
23320 if (p->error_indicator) {
23321 D(p->level--);
23322 return NULL;
23323 }
23324 void *_res = NULL;
23325 int _mark = p->mark;
23326 int _start_mark = p->mark;
23327 void **_children = PyMem_Malloc(sizeof(void *));
23328 if (!_children) {
23329 p->error_indicator = 1;
23330 PyErr_NoMemory();
23331 D(p->level--);
23332 return NULL;
23333 }
23334 ssize_t _children_capacity = 1;
23335 ssize_t _n = 0;
23336 { // lambda_param_no_default
23337 if (p->error_indicator) {
23338 D(p->level--);
23339 return NULL;
23340 }
23341 D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
23342 arg_ty lambda_param_no_default_var;
23343 while (
23344 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
23345 )
23346 {
23347 _res = lambda_param_no_default_var;
23348 if (_n == _children_capacity) {
23349 _children_capacity *= 2;
23350 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23351 if (!_new_children) {
23352 p->error_indicator = 1;
23353 PyErr_NoMemory();
23354 D(p->level--);
23355 return NULL;
23356 }
23357 _children = _new_children;
23358 }
23359 _children[_n++] = _res;
23360 _mark = p->mark;
23361 }
23362 p->mark = _mark;
23363 D(fprintf(stderr, "%*c%s _loop0_134[%d-%d]: %s failed!\n", p->level, ' ',
23364 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
23365 }
23366 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
23367 if (!_seq) {
23368 PyMem_Free(_children);
23369 p->error_indicator = 1;
23370 PyErr_NoMemory();
23371 D(p->level--);
23372 return NULL;
23373 }
23374 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
23375 PyMem_Free(_children);
23376 _PyPegen_insert_memo(p, _start_mark, _loop0_134_type, _seq);
23377 D(p->level--);
23378 return _seq;
23379}
23380
23381// _tmp_135: lambda_slash_with_default | lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023382static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023383_tmp_135_rule(Parser *p)
23384{
23385 D(p->level++);
23386 if (p->error_indicator) {
23387 D(p->level--);
23388 return NULL;
23389 }
23390 void * _res = NULL;
23391 int _mark = p->mark;
23392 { // lambda_slash_with_default
23393 if (p->error_indicator) {
23394 D(p->level--);
23395 return NULL;
23396 }
23397 D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23398 SlashWithDefault* lambda_slash_with_default_var;
23399 if (
23400 (lambda_slash_with_default_var = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
23401 )
23402 {
23403 D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23404 _res = lambda_slash_with_default_var;
23405 goto done;
23406 }
23407 p->mark = _mark;
23408 D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ',
23409 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
23410 }
23411 { // lambda_param_with_default+
23412 if (p->error_indicator) {
23413 D(p->level--);
23414 return NULL;
23415 }
23416 D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23417 asdl_seq * _loop1_152_var;
23418 if (
23419 (_loop1_152_var = _loop1_152_rule(p)) // lambda_param_with_default+
23420 )
23421 {
23422 D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23423 _res = _loop1_152_var;
23424 goto done;
23425 }
23426 p->mark = _mark;
23427 D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ',
23428 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
23429 }
23430 _res = NULL;
23431 done:
23432 D(p->level--);
23433 return _res;
23434}
23435
23436// _tmp_136: ')' | ',' (')' | '**')
23437static void *
23438_tmp_136_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023439{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023440 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023441 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023442 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023443 return NULL;
23444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023445 void * _res = NULL;
23446 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023447 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023448 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023449 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023450 return NULL;
23451 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023452 D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023453 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023454 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023455 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023456 )
23457 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023458 D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023459 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023460 goto done;
23461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023462 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023463 D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023464 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023465 }
23466 { // ',' (')' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023467 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023468 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023469 return NULL;
23470 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023471 D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023472 Token * _literal;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023473 void *_tmp_153_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023474 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023475 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023476 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +010023477 (_tmp_153_var = _tmp_153_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023478 )
23479 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023480 D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
23481 _res = _PyPegen_dummy_name(p, _literal, _tmp_153_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023482 goto done;
23483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023484 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023485 D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023486 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023488 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023489 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023490 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023491 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023492}
23493
Pablo Galindoc6483c92020-06-10 14:07:06 +010023494// _tmp_137: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023495static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023496_tmp_137_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023497{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023498 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023499 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023500 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023501 return NULL;
23502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023503 void * _res = NULL;
23504 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023505 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023506 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023507 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023508 return NULL;
23509 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023510 D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023511 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023512 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023513 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023514 )
23515 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023516 D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023517 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023518 goto done;
23519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023520 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023521 D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023522 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023523 }
23524 { // ',' (':' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023525 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023526 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023527 return NULL;
23528 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023529 D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023530 Token * _literal;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023531 void *_tmp_154_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023532 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023533 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023534 &&
Pablo Galindoc6483c92020-06-10 14:07:06 +010023535 (_tmp_154_var = _tmp_154_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023536 )
23537 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023538 D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
23539 _res = _PyPegen_dummy_name(p, _literal, _tmp_154_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023540 goto done;
23541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023542 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023543 D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023544 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023546 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023547 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023548 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023549 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023550}
23551
Pablo Galindoc6483c92020-06-10 14:07:06 +010023552// _tmp_138: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023553static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023554_tmp_138_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023555{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023556 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023557 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023558 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023559 return NULL;
23560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023561 void * _res = NULL;
23562 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023563 { // star_targets '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023564 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023565 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023566 return NULL;
23567 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023568 D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023569 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023570 expr_ty z;
23571 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010023572 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023573 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023574 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023575 )
23576 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023577 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 +010023578 _res = z;
23579 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023580 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023581 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023582 return NULL;
23583 }
23584 goto done;
23585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023586 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023587 D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023588 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023590 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023591 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023592 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023593 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023594}
23595
Pablo Galindoc6483c92020-06-10 14:07:06 +010023596// _tmp_139: '.' | '...'
Pablo Galindo9f495902020-06-08 02:57:00 +010023597static void *
23598_tmp_139_rule(Parser *p)
23599{
23600 D(p->level++);
23601 if (p->error_indicator) {
23602 D(p->level--);
23603 return NULL;
23604 }
23605 void * _res = NULL;
23606 int _mark = p->mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023607 { // '.'
23608 if (p->error_indicator) {
23609 D(p->level--);
23610 return NULL;
23611 }
23612 D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
23613 Token * _literal;
23614 if (
23615 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
23616 )
23617 {
23618 D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
23619 _res = _literal;
23620 goto done;
23621 }
23622 p->mark = _mark;
23623 D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ',
23624 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
23625 }
23626 { // '...'
23627 if (p->error_indicator) {
23628 D(p->level--);
23629 return NULL;
23630 }
23631 D(fprintf(stderr, "%*c> _tmp_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
23632 Token * _literal;
23633 if (
23634 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
23635 )
23636 {
23637 D(fprintf(stderr, "%*c+ _tmp_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
23638 _res = _literal;
23639 goto done;
23640 }
23641 p->mark = _mark;
23642 D(fprintf(stderr, "%*c%s _tmp_139[%d-%d]: %s failed!\n", p->level, ' ',
23643 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
23644 }
23645 _res = NULL;
23646 done:
23647 D(p->level--);
23648 return _res;
23649}
23650
23651// _tmp_140: '.' | '...'
23652static void *
23653_tmp_140_rule(Parser *p)
23654{
23655 D(p->level++);
23656 if (p->error_indicator) {
23657 D(p->level--);
23658 return NULL;
23659 }
23660 void * _res = NULL;
23661 int _mark = p->mark;
23662 { // '.'
23663 if (p->error_indicator) {
23664 D(p->level--);
23665 return NULL;
23666 }
23667 D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
23668 Token * _literal;
23669 if (
23670 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
23671 )
23672 {
23673 D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
23674 _res = _literal;
23675 goto done;
23676 }
23677 p->mark = _mark;
23678 D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ',
23679 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
23680 }
23681 { // '...'
23682 if (p->error_indicator) {
23683 D(p->level--);
23684 return NULL;
23685 }
23686 D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
23687 Token * _literal;
23688 if (
23689 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
23690 )
23691 {
23692 D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
23693 _res = _literal;
23694 goto done;
23695 }
23696 p->mark = _mark;
23697 D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ',
23698 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
23699 }
23700 _res = NULL;
23701 done:
23702 D(p->level--);
23703 return _res;
23704}
23705
23706// _tmp_141: '@' named_expression NEWLINE
23707static void *
23708_tmp_141_rule(Parser *p)
23709{
23710 D(p->level++);
23711 if (p->error_indicator) {
23712 D(p->level--);
23713 return NULL;
23714 }
23715 void * _res = NULL;
23716 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023717 { // '@' named_expression NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023718 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023719 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023720 return NULL;
23721 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023722 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 +010023723 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023724 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010023725 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023726 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023727 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023729 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023730 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023731 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023732 )
23733 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023734 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 +010023735 _res = f;
23736 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023737 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023738 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023739 return NULL;
23740 }
23741 goto done;
23742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023743 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023744 D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023745 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023747 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023748 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023749 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023750 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023751}
23752
Pablo Galindoc6483c92020-06-10 14:07:06 +010023753// _tmp_142: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023754static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023755_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023756{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023757 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023758 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023759 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023760 return NULL;
23761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023762 void * _res = NULL;
23763 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023764 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023765 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023766 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023767 return NULL;
23768 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023769 D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023770 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023771 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023772 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023773 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023774 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023775 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023776 )
23777 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023778 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 +010023779 _res = c;
23780 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023781 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023782 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023783 return NULL;
23784 }
23785 goto done;
23786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023787 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023788 D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023789 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023791 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023792 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023793 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023794 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023795}
23796
Pablo Galindoc6483c92020-06-10 14:07:06 +010023797// _tmp_143: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023798static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023799_tmp_143_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023800{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023801 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023802 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023803 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023804 return NULL;
23805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023806 void * _res = NULL;
23807 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023808 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023809 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023810 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023811 return NULL;
23812 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023813 D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023814 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023815 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023816 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023817 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023818 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023819 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023820 )
23821 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023822 D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023823 _res = c;
23824 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023825 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023826 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023827 return NULL;
23828 }
23829 goto done;
23830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023831 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023832 D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023833 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023835 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023836 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023837 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023838 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023839}
23840
Pablo Galindoc6483c92020-06-10 14:07:06 +010023841// _tmp_144: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023842static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023843_tmp_144_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023844{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023845 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023846 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023847 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023848 return NULL;
23849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023850 void * _res = NULL;
23851 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023852 { // 'or' conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023853 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023854 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023855 return NULL;
23856 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023857 D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023858 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023859 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023860 if (
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030023861 (_keyword = _PyPegen_expect_token(p, 531)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023862 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023863 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023864 )
23865 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023866 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 +010023867 _res = c;
23868 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023869 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023870 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023871 return NULL;
23872 }
23873 goto done;
23874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023875 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023876 D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010023877 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023879 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023880 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023881 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023882 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023883}
23884
Pablo Galindoc6483c92020-06-10 14:07:06 +010023885// _tmp_145: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023886static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010023887_tmp_145_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023888{
Pablo Galindo800a35c62020-05-25 18:38:45 +010023889 D(p->level++);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023890 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023891 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023892 return NULL;
23893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023894 void * _res = NULL;
23895 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023896 { // 'and' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023897 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010023898 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030023899 return NULL;
23900 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010023901 D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023902 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023903 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023904 if (
Lysandros Nikolaoubcd7dee2020-06-11 19:09:21 +030023905 (_keyword = _PyPegen_expect_token(p, 532)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023906 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010023907 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023908 )
23909 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010023910 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 +010023911 _res = c;
23912 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023913 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010023914 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010023915 return NULL;
23916 }
23917 goto done;
23918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023919 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023920 D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +010023921 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023923 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023924 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010023925 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010023926 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030023927}
23928
Pablo Galindoc6483c92020-06-10 14:07:06 +010023929// _tmp_146: 'if' disjunction
Pablo Galindo9f495902020-06-08 02:57:00 +010023930static void *
23931_tmp_146_rule(Parser *p)
23932{
23933 D(p->level++);
23934 if (p->error_indicator) {
23935 D(p->level--);
23936 return NULL;
23937 }
23938 void * _res = NULL;
23939 int _mark = p->mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010023940 { // 'if' disjunction
23941 if (p->error_indicator) {
23942 D(p->level--);
23943 return NULL;
23944 }
23945 D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
23946 Token * _keyword;
23947 expr_ty z;
23948 if (
23949 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
23950 &&
23951 (z = disjunction_rule(p)) // disjunction
23952 )
23953 {
23954 D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
23955 _res = z;
23956 if (_res == NULL && PyErr_Occurred()) {
23957 p->error_indicator = 1;
23958 D(p->level--);
23959 return NULL;
23960 }
23961 goto done;
23962 }
23963 p->mark = _mark;
23964 D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
23965 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
23966 }
23967 _res = NULL;
23968 done:
23969 D(p->level--);
23970 return _res;
23971}
23972
23973// _tmp_147: 'if' disjunction
23974static void *
23975_tmp_147_rule(Parser *p)
23976{
23977 D(p->level++);
23978 if (p->error_indicator) {
23979 D(p->level--);
23980 return NULL;
23981 }
23982 void * _res = NULL;
23983 int _mark = p->mark;
23984 { // 'if' disjunction
23985 if (p->error_indicator) {
23986 D(p->level--);
23987 return NULL;
23988 }
23989 D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
23990 Token * _keyword;
23991 expr_ty z;
23992 if (
23993 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
23994 &&
23995 (z = disjunction_rule(p)) // disjunction
23996 )
23997 {
23998 D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
23999 _res = z;
24000 if (_res == NULL && PyErr_Occurred()) {
24001 p->error_indicator = 1;
24002 D(p->level--);
24003 return NULL;
24004 }
24005 goto done;
24006 }
24007 p->mark = _mark;
24008 D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
24009 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
24010 }
24011 _res = NULL;
24012 done:
24013 D(p->level--);
24014 return _res;
24015}
24016
24017// _tmp_148: ',' star_target
24018static void *
24019_tmp_148_rule(Parser *p)
24020{
24021 D(p->level++);
24022 if (p->error_indicator) {
24023 D(p->level--);
24024 return NULL;
24025 }
24026 void * _res = NULL;
24027 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024028 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024029 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024030 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024031 return NULL;
24032 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024033 D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024034 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024035 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024036 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024037 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024038 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010024039 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024040 )
24041 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024042 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 +010024043 _res = c;
24044 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024045 p->error_indicator = 1;
Pablo Galindo800a35c62020-05-25 18:38:45 +010024046 D(p->level--);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024047 return NULL;
24048 }
24049 goto done;
24050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024051 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024052 D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024053 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024055 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024056 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010024057 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024058 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024059}
24060
Pablo Galindoc6483c92020-06-10 14:07:06 +010024061// _tmp_149: star_targets '='
Pablo Galindo9f495902020-06-08 02:57:00 +010024062static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024063_tmp_149_rule(Parser *p)
Pablo Galindo9f495902020-06-08 02:57:00 +010024064{
24065 D(p->level++);
24066 if (p->error_indicator) {
24067 D(p->level--);
24068 return NULL;
24069 }
24070 void * _res = NULL;
24071 int _mark = p->mark;
24072 { // star_targets '='
24073 if (p->error_indicator) {
24074 D(p->level--);
24075 return NULL;
24076 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024077 D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindo9f495902020-06-08 02:57:00 +010024078 Token * _literal;
24079 expr_ty star_targets_var;
24080 if (
24081 (star_targets_var = star_targets_rule(p)) // star_targets
24082 &&
24083 (_literal = _PyPegen_expect_token(p, 22)) // token='='
24084 )
24085 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024086 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 +010024087 _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
24088 goto done;
24089 }
24090 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024091 D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +010024092 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
24093 }
24094 _res = NULL;
24095 done:
24096 D(p->level--);
24097 return _res;
24098}
24099
Pablo Galindoc6483c92020-06-10 14:07:06 +010024100// _tmp_150: star_targets '='
Pablo Galindo9f495902020-06-08 02:57:00 +010024101static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024102_tmp_150_rule(Parser *p)
Pablo Galindo9f495902020-06-08 02:57:00 +010024103{
24104 D(p->level++);
24105 if (p->error_indicator) {
24106 D(p->level--);
24107 return NULL;
24108 }
24109 void * _res = NULL;
24110 int _mark = p->mark;
24111 { // star_targets '='
24112 if (p->error_indicator) {
24113 D(p->level--);
24114 return NULL;
24115 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024116 D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
Pablo Galindo9f495902020-06-08 02:57:00 +010024117 Token * _literal;
24118 expr_ty star_targets_var;
24119 if (
24120 (star_targets_var = star_targets_rule(p)) // star_targets
24121 &&
24122 (_literal = _PyPegen_expect_token(p, 22)) // token='='
24123 )
24124 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024125 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 +010024126 _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
24127 goto done;
24128 }
24129 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024130 D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo9f495902020-06-08 02:57:00 +010024131 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
24132 }
24133 _res = NULL;
24134 done:
24135 D(p->level--);
24136 return _res;
24137}
24138
Pablo Galindoc6483c92020-06-10 14:07:06 +010024139// _loop1_151: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024140static asdl_seq *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024141_loop1_151_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070024142{
Pablo Galindo800a35c62020-05-25 18:38:45 +010024143 D(p->level++);
Guido van Rossumc001c092020-04-30 12:12:19 -070024144 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024145 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024146 return NULL;
24147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024148 void *_res = NULL;
24149 int _mark = p->mark;
24150 int _start_mark = p->mark;
24151 void **_children = PyMem_Malloc(sizeof(void *));
24152 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030024153 p->error_indicator = 1;
24154 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010024155 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024156 return NULL;
24157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024158 ssize_t _children_capacity = 1;
24159 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070024160 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024161 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024162 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024163 return NULL;
24164 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024165 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 -070024166 NameDefaultPair* param_with_default_var;
24167 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010024168 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070024169 )
24170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024171 _res = param_with_default_var;
24172 if (_n == _children_capacity) {
24173 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030024174 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24175 if (!_new_children) {
24176 p->error_indicator = 1;
24177 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010024178 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024179 return NULL;
24180 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030024181 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070024182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024183 _children[_n++] = _res;
24184 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070024185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024186 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024187 D(fprintf(stderr, "%*c%s _loop1_151[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024188 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
Guido van Rossumc001c092020-04-30 12:12:19 -070024189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024190 if (_n == 0 || p->error_indicator) {
24191 PyMem_Free(_children);
Pablo Galindo800a35c62020-05-25 18:38:45 +010024192 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024193 return NULL;
24194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024195 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
24196 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024197 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030024198 p->error_indicator = 1;
24199 PyErr_NoMemory();
Pablo Galindo800a35c62020-05-25 18:38:45 +010024200 D(p->level--);
Guido van Rossumc001c092020-04-30 12:12:19 -070024201 return NULL;
24202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024203 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
24204 PyMem_Free(_children);
Pablo Galindoc6483c92020-06-10 14:07:06 +010024205 _PyPegen_insert_memo(p, _start_mark, _loop1_151_type, _seq);
Pablo Galindo800a35c62020-05-25 18:38:45 +010024206 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024207 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070024208}
24209
Pablo Galindoc6483c92020-06-10 14:07:06 +010024210// _loop1_152: lambda_param_with_default
24211static asdl_seq *
24212_loop1_152_rule(Parser *p)
24213{
24214 D(p->level++);
24215 if (p->error_indicator) {
24216 D(p->level--);
24217 return NULL;
24218 }
24219 void *_res = NULL;
24220 int _mark = p->mark;
24221 int _start_mark = p->mark;
24222 void **_children = PyMem_Malloc(sizeof(void *));
24223 if (!_children) {
24224 p->error_indicator = 1;
24225 PyErr_NoMemory();
24226 D(p->level--);
24227 return NULL;
24228 }
24229 ssize_t _children_capacity = 1;
24230 ssize_t _n = 0;
24231 { // lambda_param_with_default
24232 if (p->error_indicator) {
24233 D(p->level--);
24234 return NULL;
24235 }
24236 D(fprintf(stderr, "%*c> _loop1_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
24237 NameDefaultPair* lambda_param_with_default_var;
24238 while (
24239 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
24240 )
24241 {
24242 _res = lambda_param_with_default_var;
24243 if (_n == _children_capacity) {
24244 _children_capacity *= 2;
24245 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24246 if (!_new_children) {
24247 p->error_indicator = 1;
24248 PyErr_NoMemory();
24249 D(p->level--);
24250 return NULL;
24251 }
24252 _children = _new_children;
24253 }
24254 _children[_n++] = _res;
24255 _mark = p->mark;
24256 }
24257 p->mark = _mark;
24258 D(fprintf(stderr, "%*c%s _loop1_152[%d-%d]: %s failed!\n", p->level, ' ',
24259 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
24260 }
24261 if (_n == 0 || p->error_indicator) {
24262 PyMem_Free(_children);
24263 D(p->level--);
24264 return NULL;
24265 }
24266 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
24267 if (!_seq) {
24268 PyMem_Free(_children);
24269 p->error_indicator = 1;
24270 PyErr_NoMemory();
24271 D(p->level--);
24272 return NULL;
24273 }
24274 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
24275 PyMem_Free(_children);
24276 _PyPegen_insert_memo(p, _start_mark, _loop1_152_type, _seq);
24277 D(p->level--);
24278 return _seq;
24279}
24280
24281// _tmp_153: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024282static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024283_tmp_153_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024284{
Pablo Galindo800a35c62020-05-25 18:38:45 +010024285 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024286 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024287 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024288 return NULL;
24289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024290 void * _res = NULL;
24291 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024292 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024293 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024294 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024295 return NULL;
24296 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024297 D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024298 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024299 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024300 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024301 )
24302 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024303 D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024304 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024305 goto done;
24306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024307 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024308 D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024309 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024310 }
24311 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024312 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024313 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024314 return NULL;
24315 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024316 D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024317 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024318 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024319 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024320 )
24321 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024322 D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024323 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024324 goto done;
24325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024326 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024327 D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024328 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024330 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024331 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010024332 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024333 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024334}
24335
Pablo Galindoc6483c92020-06-10 14:07:06 +010024336// _tmp_154: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024337static void *
Pablo Galindoc6483c92020-06-10 14:07:06 +010024338_tmp_154_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024339{
Pablo Galindo800a35c62020-05-25 18:38:45 +010024340 D(p->level++);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024341 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024342 D(p->level--);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024343 return NULL;
24344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024345 void * _res = NULL;
24346 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024347 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024348 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024349 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024350 return NULL;
24351 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024352 D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024353 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024354 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024355 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024356 )
24357 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024358 D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024359 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024360 goto done;
24361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024362 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024363 D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024364 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024365 }
24366 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024367 if (p->error_indicator) {
Pablo Galindo800a35c62020-05-25 18:38:45 +010024368 D(p->level--);
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030024369 return NULL;
24370 }
Pablo Galindoc6483c92020-06-10 14:07:06 +010024371 D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024372 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024373 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024374 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024375 )
24376 {
Pablo Galindoc6483c92020-06-10 14:07:06 +010024377 D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024378 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024379 goto done;
24380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024381 p->mark = _mark;
Pablo Galindoc6483c92020-06-10 14:07:06 +010024382 D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
Pablo Galindo800a35c62020-05-25 18:38:45 +010024383 p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024385 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024386 done:
Pablo Galindo800a35c62020-05-25 18:38:45 +010024387 D(p->level--);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010024388 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030024389}
24390
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024391void *
24392_PyPegen_parse(Parser *p)
24393{
24394 // Initialize keywords
24395 p->keywords = reserved_keywords;
24396 p->n_keyword_lists = n_keyword_lists;
24397
24398 // Run parser
24399 void *result = NULL;
24400 if (p->start_rule == Py_file_input) {
24401 result = file_rule(p);
24402 } else if (p->start_rule == Py_single_input) {
24403 result = interactive_rule(p);
24404 } else if (p->start_rule == Py_eval_input) {
24405 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070024406 } else if (p->start_rule == Py_func_type_input) {
24407 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010024408 } else if (p->start_rule == Py_fstring_input) {
24409 result = fstring_rule(p);
24410 }
24411
24412 return result;
24413}
24414
24415// The end