blob: b4756319783e2c9eaa530cdb646bcd9b2964cb83 [file] [log] [blame]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001// @generated by pegen.py from ./Grammar/python.gram
2#include "pegen.h"
3static const int n_keyword_lists = 15;
4static KeywordToken *reserved_keywords[] = {
5 NULL,
6 NULL,
7 (KeywordToken[]) {
8 {"if", 510},
9 {"in", 518},
10 {"is", 526},
11 {"as", 531},
12 {"or", 532},
13 {NULL, -1},
14 },
15 (KeywordToken[]) {
16 {"del", 503},
17 {"try", 511},
18 {"for", 517},
19 {"def", 522},
20 {"not", 525},
21 {"and", 533},
22 {NULL, -1},
23 },
24 (KeywordToken[]) {
25 {"pass", 502},
26 {"from", 514},
27 {"elif", 515},
28 {"else", 516},
29 {"with", 519},
30 {"True", 527},
31 {"None", 529},
32 {NULL, -1},
33 },
34 (KeywordToken[]) {
35 {"raise", 501},
36 {"yield", 504},
37 {"break", 506},
38 {"while", 512},
39 {"class", 523},
40 {"False", 528},
41 {NULL, -1},
42 },
43 (KeywordToken[]) {
44 {"return", 500},
45 {"assert", 505},
46 {"global", 508},
47 {"import", 513},
48 {"except", 520},
49 {"lambda", 524},
50 {NULL, -1},
51 },
52 (KeywordToken[]) {
53 {"finally", 521},
54 {NULL, -1},
55 },
56 (KeywordToken[]) {
57 {"continue", 507},
58 {"nonlocal", 509},
59 {NULL, -1},
60 },
61 NULL,
62 NULL,
63 NULL,
64 NULL,
65 NULL,
66 (KeywordToken[]) {
67 {"__new_parser__", 530},
68 {NULL, -1},
69 },
70};
71#define file_type 1000
72#define interactive_type 1001
73#define eval_type 1002
Guido van Rossumc001c092020-04-30 12:12:19 -070074#define func_type_type 1003
75#define fstring_type 1004
76#define type_expressions_type 1005
77#define statements_type 1006
78#define statement_type 1007
79#define statement_newline_type 1008
80#define simple_stmt_type 1009
81#define small_stmt_type 1010
82#define compound_stmt_type 1011
83#define assignment_type 1012
84#define augassign_type 1013
85#define global_stmt_type 1014
86#define nonlocal_stmt_type 1015
87#define yield_stmt_type 1016
88#define assert_stmt_type 1017
89#define del_stmt_type 1018
90#define import_stmt_type 1019
91#define import_name_type 1020
92#define import_from_type 1021
93#define import_from_targets_type 1022
94#define import_from_as_names_type 1023
95#define import_from_as_name_type 1024
96#define dotted_as_names_type 1025
97#define dotted_as_name_type 1026
98#define dotted_name_type 1027 // Left-recursive
99#define if_stmt_type 1028
100#define elif_stmt_type 1029
101#define else_block_type 1030
102#define while_stmt_type 1031
103#define for_stmt_type 1032
104#define with_stmt_type 1033
105#define with_item_type 1034
106#define try_stmt_type 1035
107#define except_block_type 1036
108#define finally_block_type 1037
109#define return_stmt_type 1038
110#define raise_stmt_type 1039
111#define function_def_type 1040
112#define function_def_raw_type 1041
113#define func_type_comment_type 1042
114#define params_type 1043
115#define parameters_type 1044
116#define slash_no_default_type 1045
117#define slash_with_default_type 1046
118#define star_etc_type 1047
119#define kwds_type 1048
120#define param_no_default_type 1049
121#define param_with_default_type 1050
122#define param_maybe_default_type 1051
123#define param_type 1052
124#define annotation_type 1053
125#define default_type 1054
126#define decorators_type 1055
127#define class_def_type 1056
128#define class_def_raw_type 1057
129#define block_type 1058
130#define expressions_list_type 1059
131#define star_expressions_type 1060
132#define star_expression_type 1061
133#define star_named_expressions_type 1062
134#define star_named_expression_type 1063
135#define named_expression_type 1064
136#define annotated_rhs_type 1065
137#define expressions_type 1066
138#define expression_type 1067
139#define lambdef_type 1068
140#define lambda_parameters_type 1069
Guido van Rossum3941d972020-05-01 09:42:03 -0700141#define lambda_slash_no_default_type 1070
Guido van Rossumc001c092020-04-30 12:12:19 -0700142#define lambda_slash_with_default_type 1071
143#define lambda_star_etc_type 1072
Guido van Rossum3941d972020-05-01 09:42:03 -0700144#define lambda_kwds_type 1073
145#define lambda_param_no_default_type 1074
146#define lambda_param_with_default_type 1075
147#define lambda_param_maybe_default_type 1076
148#define lambda_param_type 1077
149#define disjunction_type 1078
150#define conjunction_type 1079
151#define inversion_type 1080
152#define comparison_type 1081
153#define compare_op_bitwise_or_pair_type 1082
154#define eq_bitwise_or_type 1083
155#define noteq_bitwise_or_type 1084
156#define lte_bitwise_or_type 1085
157#define lt_bitwise_or_type 1086
158#define gte_bitwise_or_type 1087
159#define gt_bitwise_or_type 1088
160#define notin_bitwise_or_type 1089
161#define in_bitwise_or_type 1090
162#define isnot_bitwise_or_type 1091
163#define is_bitwise_or_type 1092
164#define bitwise_or_type 1093 // Left-recursive
165#define bitwise_xor_type 1094 // Left-recursive
166#define bitwise_and_type 1095 // Left-recursive
167#define shift_expr_type 1096 // Left-recursive
168#define sum_type 1097 // Left-recursive
169#define term_type 1098 // Left-recursive
170#define factor_type 1099
171#define power_type 1100
172#define await_primary_type 1101
173#define primary_type 1102 // Left-recursive
174#define slices_type 1103
175#define slice_type 1104
176#define atom_type 1105
177#define strings_type 1106
178#define list_type 1107
179#define listcomp_type 1108
180#define tuple_type 1109
181#define group_type 1110
182#define genexp_type 1111
183#define set_type 1112
184#define setcomp_type 1113
185#define dict_type 1114
186#define dictcomp_type 1115
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -0700187#define double_starred_kvpairs_type 1116
188#define double_starred_kvpair_type 1117
189#define kvpair_type 1118
190#define for_if_clauses_type 1119
191#define for_if_clause_type 1120
192#define yield_expr_type 1121
193#define arguments_type 1122
194#define args_type 1123
195#define kwargs_type 1124
196#define starred_expression_type 1125
197#define kwarg_or_starred_type 1126
198#define kwarg_or_double_starred_type 1127
199#define star_targets_type 1128
200#define star_targets_seq_type 1129
201#define star_target_type 1130
202#define star_atom_type 1131
203#define single_target_type 1132
204#define single_subscript_attribute_target_type 1133
205#define del_targets_type 1134
206#define del_target_type 1135
207#define del_t_atom_type 1136
208#define del_target_end_type 1137
209#define targets_type 1138
210#define target_type 1139
211#define t_primary_type 1140 // Left-recursive
212#define t_lookahead_type 1141
213#define t_atom_type 1142
214#define incorrect_arguments_type 1143
215#define invalid_kwarg_type 1144
216#define invalid_named_expression_type 1145
217#define invalid_assignment_type 1146
218#define invalid_block_type 1147
219#define invalid_comprehension_type 1148
220#define invalid_dict_comprehension_type 1149
221#define invalid_parameters_type 1150
222#define invalid_star_etc_type 1151
223#define invalid_lambda_star_etc_type 1152
224#define invalid_double_type_comments_type 1153
225#define invalid_del_target_type 1154
226#define invalid_import_from_targets_type 1155
227#define _loop0_1_type 1156
228#define _loop0_2_type 1157
229#define _loop0_4_type 1158
230#define _gather_3_type 1159
231#define _loop0_6_type 1160
232#define _gather_5_type 1161
233#define _loop0_8_type 1162
234#define _gather_7_type 1163
235#define _loop0_10_type 1164
236#define _gather_9_type 1165
237#define _loop1_11_type 1166
238#define _loop0_13_type 1167
239#define _gather_12_type 1168
240#define _tmp_14_type 1169
241#define _tmp_15_type 1170
242#define _tmp_16_type 1171
243#define _tmp_17_type 1172
244#define _tmp_18_type 1173
245#define _tmp_19_type 1174
246#define _tmp_20_type 1175
247#define _tmp_21_type 1176
248#define _loop1_22_type 1177
249#define _tmp_23_type 1178
250#define _tmp_24_type 1179
251#define _loop0_26_type 1180
252#define _gather_25_type 1181
253#define _loop0_28_type 1182
254#define _gather_27_type 1183
255#define _tmp_29_type 1184
256#define _loop0_30_type 1185
257#define _loop1_31_type 1186
258#define _loop0_33_type 1187
259#define _gather_32_type 1188
260#define _tmp_34_type 1189
261#define _loop0_36_type 1190
262#define _gather_35_type 1191
263#define _tmp_37_type 1192
264#define _loop0_39_type 1193
265#define _gather_38_type 1194
266#define _loop0_41_type 1195
267#define _gather_40_type 1196
268#define _loop0_43_type 1197
269#define _gather_42_type 1198
270#define _loop0_45_type 1199
271#define _gather_44_type 1200
272#define _tmp_46_type 1201
273#define _loop1_47_type 1202
274#define _tmp_48_type 1203
275#define _tmp_49_type 1204
276#define _tmp_50_type 1205
277#define _tmp_51_type 1206
278#define _tmp_52_type 1207
279#define _loop0_53_type 1208
280#define _loop0_54_type 1209
281#define _loop0_55_type 1210
282#define _loop1_56_type 1211
283#define _loop0_57_type 1212
284#define _loop1_58_type 1213
285#define _loop1_59_type 1214
286#define _loop1_60_type 1215
287#define _loop0_61_type 1216
288#define _loop1_62_type 1217
289#define _loop0_63_type 1218
290#define _loop1_64_type 1219
291#define _loop0_65_type 1220
292#define _loop1_66_type 1221
293#define _loop1_67_type 1222
294#define _tmp_68_type 1223
295#define _loop0_70_type 1224
296#define _gather_69_type 1225
297#define _loop1_71_type 1226
298#define _loop0_73_type 1227
299#define _gather_72_type 1228
300#define _loop1_74_type 1229
301#define _loop0_75_type 1230
302#define _loop0_76_type 1231
303#define _loop0_77_type 1232
304#define _loop1_78_type 1233
305#define _loop0_79_type 1234
306#define _loop1_80_type 1235
307#define _loop1_81_type 1236
308#define _loop1_82_type 1237
309#define _loop0_83_type 1238
310#define _loop1_84_type 1239
311#define _loop0_85_type 1240
312#define _loop1_86_type 1241
313#define _loop0_87_type 1242
314#define _loop1_88_type 1243
315#define _loop1_89_type 1244
316#define _loop1_90_type 1245
317#define _loop1_91_type 1246
318#define _tmp_92_type 1247
319#define _loop0_94_type 1248
320#define _gather_93_type 1249
321#define _tmp_95_type 1250
322#define _tmp_96_type 1251
323#define _tmp_97_type 1252
324#define _tmp_98_type 1253
325#define _loop1_99_type 1254
326#define _tmp_100_type 1255
327#define _tmp_101_type 1256
328#define _loop0_103_type 1257
329#define _gather_102_type 1258
330#define _loop1_104_type 1259
331#define _loop0_105_type 1260
332#define _loop0_106_type 1261
333#define _tmp_107_type 1262
334#define _tmp_108_type 1263
335#define _loop0_110_type 1264
336#define _gather_109_type 1265
337#define _loop0_112_type 1266
338#define _gather_111_type 1267
339#define _loop0_114_type 1268
340#define _gather_113_type 1269
341#define _loop0_116_type 1270
342#define _gather_115_type 1271
343#define _loop0_117_type 1272
344#define _loop0_119_type 1273
345#define _gather_118_type 1274
346#define _tmp_120_type 1275
347#define _loop0_122_type 1276
348#define _gather_121_type 1277
349#define _loop0_124_type 1278
350#define _gather_123_type 1279
351#define _tmp_125_type 1280
352#define _loop0_126_type 1281
353#define _tmp_127_type 1282
354#define _tmp_128_type 1283
355#define _tmp_129_type 1284
356#define _tmp_130_type 1285
357#define _loop0_131_type 1286
358#define _tmp_132_type 1287
359#define _tmp_133_type 1288
360#define _tmp_134_type 1289
361#define _tmp_135_type 1290
362#define _tmp_136_type 1291
363#define _tmp_137_type 1292
364#define _tmp_138_type 1293
365#define _tmp_139_type 1294
366#define _tmp_140_type 1295
367#define _tmp_141_type 1296
368#define _tmp_142_type 1297
369#define _tmp_143_type 1298
370#define _tmp_144_type 1299
371#define _tmp_145_type 1300
372#define _loop1_146_type 1301
373#define _tmp_147_type 1302
374#define _tmp_148_type 1303
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100375
376static mod_ty file_rule(Parser *p);
377static mod_ty interactive_rule(Parser *p);
378static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700379static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100380static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700381static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100382static asdl_seq* statements_rule(Parser *p);
383static asdl_seq* statement_rule(Parser *p);
384static asdl_seq* statement_newline_rule(Parser *p);
385static asdl_seq* simple_stmt_rule(Parser *p);
386static stmt_ty small_stmt_rule(Parser *p);
387static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300388static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100389static AugOperator* augassign_rule(Parser *p);
390static stmt_ty global_stmt_rule(Parser *p);
391static stmt_ty nonlocal_stmt_rule(Parser *p);
392static stmt_ty yield_stmt_rule(Parser *p);
393static stmt_ty assert_stmt_rule(Parser *p);
394static stmt_ty del_stmt_rule(Parser *p);
395static stmt_ty import_stmt_rule(Parser *p);
396static stmt_ty import_name_rule(Parser *p);
397static stmt_ty import_from_rule(Parser *p);
398static asdl_seq* import_from_targets_rule(Parser *p);
399static asdl_seq* import_from_as_names_rule(Parser *p);
400static alias_ty import_from_as_name_rule(Parser *p);
401static asdl_seq* dotted_as_names_rule(Parser *p);
402static alias_ty dotted_as_name_rule(Parser *p);
403static expr_ty dotted_name_rule(Parser *p);
404static stmt_ty if_stmt_rule(Parser *p);
405static stmt_ty elif_stmt_rule(Parser *p);
406static asdl_seq* else_block_rule(Parser *p);
407static stmt_ty while_stmt_rule(Parser *p);
408static stmt_ty for_stmt_rule(Parser *p);
409static stmt_ty with_stmt_rule(Parser *p);
410static withitem_ty with_item_rule(Parser *p);
411static stmt_ty try_stmt_rule(Parser *p);
412static excepthandler_ty except_block_rule(Parser *p);
413static asdl_seq* finally_block_rule(Parser *p);
414static stmt_ty return_stmt_rule(Parser *p);
415static stmt_ty raise_stmt_rule(Parser *p);
416static stmt_ty function_def_rule(Parser *p);
417static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100418static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100419static arguments_ty params_rule(Parser *p);
420static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700421static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100422static SlashWithDefault* slash_with_default_rule(Parser *p);
423static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100424static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700425static arg_ty param_no_default_rule(Parser *p);
426static NameDefaultPair* param_with_default_rule(Parser *p);
427static NameDefaultPair* param_maybe_default_rule(Parser *p);
428static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100429static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700430static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100431static asdl_seq* decorators_rule(Parser *p);
432static stmt_ty class_def_rule(Parser *p);
433static stmt_ty class_def_raw_rule(Parser *p);
434static asdl_seq* block_rule(Parser *p);
435static asdl_seq* expressions_list_rule(Parser *p);
436static expr_ty star_expressions_rule(Parser *p);
437static expr_ty star_expression_rule(Parser *p);
438static asdl_seq* star_named_expressions_rule(Parser *p);
439static expr_ty star_named_expression_rule(Parser *p);
440static expr_ty named_expression_rule(Parser *p);
441static expr_ty annotated_rhs_rule(Parser *p);
442static expr_ty expressions_rule(Parser *p);
443static expr_ty expression_rule(Parser *p);
444static expr_ty lambdef_rule(Parser *p);
445static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700446static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100447static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
448static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100449static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700450static arg_ty lambda_param_no_default_rule(Parser *p);
451static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
452static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
453static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100454static expr_ty disjunction_rule(Parser *p);
455static expr_ty conjunction_rule(Parser *p);
456static expr_ty inversion_rule(Parser *p);
457static expr_ty comparison_rule(Parser *p);
458static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
459static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
460static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
461static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
462static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
463static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
464static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
465static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
466static CmpopExprPair* in_bitwise_or_rule(Parser *p);
467static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
468static CmpopExprPair* is_bitwise_or_rule(Parser *p);
469static expr_ty bitwise_or_rule(Parser *p);
470static expr_ty bitwise_xor_rule(Parser *p);
471static expr_ty bitwise_and_rule(Parser *p);
472static expr_ty shift_expr_rule(Parser *p);
473static expr_ty sum_rule(Parser *p);
474static expr_ty term_rule(Parser *p);
475static expr_ty factor_rule(Parser *p);
476static expr_ty power_rule(Parser *p);
477static expr_ty await_primary_rule(Parser *p);
478static expr_ty primary_rule(Parser *p);
479static expr_ty slices_rule(Parser *p);
480static expr_ty slice_rule(Parser *p);
481static expr_ty atom_rule(Parser *p);
482static expr_ty strings_rule(Parser *p);
483static expr_ty list_rule(Parser *p);
484static expr_ty listcomp_rule(Parser *p);
485static expr_ty tuple_rule(Parser *p);
486static expr_ty group_rule(Parser *p);
487static expr_ty genexp_rule(Parser *p);
488static expr_ty set_rule(Parser *p);
489static expr_ty setcomp_rule(Parser *p);
490static expr_ty dict_rule(Parser *p);
491static expr_ty dictcomp_rule(Parser *p);
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -0700492static asdl_seq* double_starred_kvpairs_rule(Parser *p);
493static KeyValuePair* double_starred_kvpair_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100494static KeyValuePair* kvpair_rule(Parser *p);
495static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300496static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100497static expr_ty yield_expr_rule(Parser *p);
498static expr_ty arguments_rule(Parser *p);
499static expr_ty args_rule(Parser *p);
500static asdl_seq* kwargs_rule(Parser *p);
501static expr_ty starred_expression_rule(Parser *p);
502static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
503static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
504static expr_ty star_targets_rule(Parser *p);
505static asdl_seq* star_targets_seq_rule(Parser *p);
506static expr_ty star_target_rule(Parser *p);
507static expr_ty star_atom_rule(Parser *p);
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300508static expr_ty single_target_rule(Parser *p);
509static expr_ty single_subscript_attribute_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100510static asdl_seq* del_targets_rule(Parser *p);
511static expr_ty del_target_rule(Parser *p);
512static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700513static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100514static asdl_seq* targets_rule(Parser *p);
515static expr_ty target_rule(Parser *p);
516static expr_ty t_primary_rule(Parser *p);
517static void *t_lookahead_rule(Parser *p);
518static expr_ty t_atom_rule(Parser *p);
519static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300520static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100521static void *invalid_named_expression_rule(Parser *p);
522static void *invalid_assignment_rule(Parser *p);
523static void *invalid_block_rule(Parser *p);
524static void *invalid_comprehension_rule(Parser *p);
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -0700525static void *invalid_dict_comprehension_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100526static void *invalid_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300527static void *invalid_star_etc_rule(Parser *p);
528static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700529static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700530static void *invalid_del_target_rule(Parser *p);
Pablo Galindo275d7e12020-05-21 22:04:54 +0100531static void *invalid_import_from_targets_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100532static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700533static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100534static asdl_seq *_loop0_4_rule(Parser *p);
535static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700536static asdl_seq *_loop0_6_rule(Parser *p);
537static asdl_seq *_gather_5_rule(Parser *p);
538static asdl_seq *_loop0_8_rule(Parser *p);
539static asdl_seq *_gather_7_rule(Parser *p);
540static asdl_seq *_loop0_10_rule(Parser *p);
541static asdl_seq *_gather_9_rule(Parser *p);
542static asdl_seq *_loop1_11_rule(Parser *p);
543static asdl_seq *_loop0_13_rule(Parser *p);
544static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100545static void *_tmp_14_rule(Parser *p);
546static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700547static void *_tmp_16_rule(Parser *p);
548static void *_tmp_17_rule(Parser *p);
549static void *_tmp_18_rule(Parser *p);
550static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100551static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700552static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100553static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700554static void *_tmp_23_rule(Parser *p);
555static void *_tmp_24_rule(Parser *p);
556static asdl_seq *_loop0_26_rule(Parser *p);
557static asdl_seq *_gather_25_rule(Parser *p);
558static asdl_seq *_loop0_28_rule(Parser *p);
559static asdl_seq *_gather_27_rule(Parser *p);
560static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100561static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700562static asdl_seq *_loop1_31_rule(Parser *p);
563static asdl_seq *_loop0_33_rule(Parser *p);
564static asdl_seq *_gather_32_rule(Parser *p);
565static void *_tmp_34_rule(Parser *p);
566static asdl_seq *_loop0_36_rule(Parser *p);
567static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100568static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700569static asdl_seq *_loop0_39_rule(Parser *p);
570static asdl_seq *_gather_38_rule(Parser *p);
571static asdl_seq *_loop0_41_rule(Parser *p);
572static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300573static asdl_seq *_loop0_43_rule(Parser *p);
574static asdl_seq *_gather_42_rule(Parser *p);
575static asdl_seq *_loop0_45_rule(Parser *p);
576static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100577static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300578static asdl_seq *_loop1_47_rule(Parser *p);
579static void *_tmp_48_rule(Parser *p);
580static void *_tmp_49_rule(Parser *p);
581static void *_tmp_50_rule(Parser *p);
582static void *_tmp_51_rule(Parser *p);
583static void *_tmp_52_rule(Parser *p);
584static asdl_seq *_loop0_53_rule(Parser *p);
585static asdl_seq *_loop0_54_rule(Parser *p);
586static asdl_seq *_loop0_55_rule(Parser *p);
587static asdl_seq *_loop1_56_rule(Parser *p);
588static asdl_seq *_loop0_57_rule(Parser *p);
589static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700590static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300591static asdl_seq *_loop1_60_rule(Parser *p);
592static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700593static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300594static asdl_seq *_loop0_63_rule(Parser *p);
595static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700596static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700597static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300598static asdl_seq *_loop1_67_rule(Parser *p);
599static void *_tmp_68_rule(Parser *p);
600static asdl_seq *_loop0_70_rule(Parser *p);
601static asdl_seq *_gather_69_rule(Parser *p);
602static asdl_seq *_loop1_71_rule(Parser *p);
603static asdl_seq *_loop0_73_rule(Parser *p);
604static asdl_seq *_gather_72_rule(Parser *p);
605static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700606static asdl_seq *_loop0_75_rule(Parser *p);
607static asdl_seq *_loop0_76_rule(Parser *p);
608static asdl_seq *_loop0_77_rule(Parser *p);
609static asdl_seq *_loop1_78_rule(Parser *p);
610static asdl_seq *_loop0_79_rule(Parser *p);
611static asdl_seq *_loop1_80_rule(Parser *p);
612static asdl_seq *_loop1_81_rule(Parser *p);
613static asdl_seq *_loop1_82_rule(Parser *p);
614static asdl_seq *_loop0_83_rule(Parser *p);
615static asdl_seq *_loop1_84_rule(Parser *p);
616static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300617static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700618static asdl_seq *_loop0_87_rule(Parser *p);
619static asdl_seq *_loop1_88_rule(Parser *p);
620static asdl_seq *_loop1_89_rule(Parser *p);
621static asdl_seq *_loop1_90_rule(Parser *p);
622static asdl_seq *_loop1_91_rule(Parser *p);
623static void *_tmp_92_rule(Parser *p);
624static asdl_seq *_loop0_94_rule(Parser *p);
625static asdl_seq *_gather_93_rule(Parser *p);
626static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700627static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700628static void *_tmp_97_rule(Parser *p);
629static void *_tmp_98_rule(Parser *p);
630static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100631static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300632static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700633static asdl_seq *_loop0_103_rule(Parser *p);
634static asdl_seq *_gather_102_rule(Parser *p);
635static asdl_seq *_loop1_104_rule(Parser *p);
636static asdl_seq *_loop0_105_rule(Parser *p);
637static asdl_seq *_loop0_106_rule(Parser *p);
638static void *_tmp_107_rule(Parser *p);
639static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300640static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700641static asdl_seq *_gather_109_rule(Parser *p);
642static asdl_seq *_loop0_112_rule(Parser *p);
643static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100644static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300645static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100646static asdl_seq *_loop0_116_rule(Parser *p);
647static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700648static asdl_seq *_loop0_117_rule(Parser *p);
649static asdl_seq *_loop0_119_rule(Parser *p);
650static asdl_seq *_gather_118_rule(Parser *p);
651static void *_tmp_120_rule(Parser *p);
652static asdl_seq *_loop0_122_rule(Parser *p);
653static asdl_seq *_gather_121_rule(Parser *p);
654static asdl_seq *_loop0_124_rule(Parser *p);
655static asdl_seq *_gather_123_rule(Parser *p);
656static void *_tmp_125_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300657static asdl_seq *_loop0_126_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700658static void *_tmp_127_rule(Parser *p);
659static void *_tmp_128_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100660static void *_tmp_129_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300661static void *_tmp_130_rule(Parser *p);
662static asdl_seq *_loop0_131_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100663static void *_tmp_132_rule(Parser *p);
664static void *_tmp_133_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700665static void *_tmp_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100666static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700667static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100668static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700669static void *_tmp_138_rule(Parser *p);
670static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300671static void *_tmp_140_rule(Parser *p);
672static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700673static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300674static void *_tmp_143_rule(Parser *p);
675static void *_tmp_144_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300676static void *_tmp_145_rule(Parser *p);
677static asdl_seq *_loop1_146_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300678static void *_tmp_147_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300679static void *_tmp_148_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100680
681
682// file: statements? $
683static mod_ty
684file_rule(Parser *p)
685{
686 if (p->error_indicator) {
687 return NULL;
688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100689 mod_ty _res = NULL;
690 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100691 { // statements? $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300692 if (p->error_indicator) {
693 return NULL;
694 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100695 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100696 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100697 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100698 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100699 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100700 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100701 )
702 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100703 _res = _PyPegen_make_module ( p , a );
704 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100705 p->error_indicator = 1;
706 return NULL;
707 }
708 goto done;
709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100710 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100712 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100713 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100714 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100715}
716
717// interactive: statement_newline
718static mod_ty
719interactive_rule(Parser *p)
720{
721 if (p->error_indicator) {
722 return NULL;
723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100724 mod_ty _res = NULL;
725 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100726 { // statement_newline
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300727 if (p->error_indicator) {
728 return NULL;
729 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100730 asdl_seq* a;
731 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100732 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100733 )
734 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100735 _res = Interactive ( a , p -> arena );
736 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100737 p->error_indicator = 1;
738 return NULL;
739 }
740 goto done;
741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100742 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100744 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100745 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100746 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100747}
748
749// eval: expressions NEWLINE* $
750static mod_ty
751eval_rule(Parser *p)
752{
753 if (p->error_indicator) {
754 return NULL;
755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100756 mod_ty _res = NULL;
757 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100758 { // expressions NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300759 if (p->error_indicator) {
760 return NULL;
761 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100762 asdl_seq * _loop0_1_var;
763 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100764 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100765 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100766 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100767 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100768 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100769 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100770 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100771 )
772 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100773 _res = Expression ( a , p -> arena );
774 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100775 p->error_indicator = 1;
776 return NULL;
777 }
778 goto done;
779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100780 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100782 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100783 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100784 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100785}
786
Guido van Rossumc001c092020-04-30 12:12:19 -0700787// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
788static mod_ty
789func_type_rule(Parser *p)
790{
791 if (p->error_indicator) {
792 return NULL;
793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100794 mod_ty _res = NULL;
795 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700796 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300797 if (p->error_indicator) {
798 return NULL;
799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100800 Token * _literal;
801 Token * _literal_1;
802 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700803 asdl_seq * _loop0_2_var;
804 void *a;
805 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100806 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700807 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100808 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700809 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100810 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700811 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100812 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700813 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100814 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700815 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100816 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700817 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100818 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700819 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100820 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700821 )
822 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100823 _res = FunctionType ( a , b , p -> arena );
824 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700825 p->error_indicator = 1;
826 return NULL;
827 }
828 goto done;
829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100830 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100832 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700833 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100834 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700835}
836
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100837// fstring: star_expressions
838static expr_ty
839fstring_rule(Parser *p)
840{
841 if (p->error_indicator) {
842 return NULL;
843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100844 expr_ty _res = NULL;
845 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100846 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300847 if (p->error_indicator) {
848 return NULL;
849 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100850 expr_ty star_expressions_var;
851 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100852 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100853 )
854 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100855 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100856 goto done;
857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100858 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100860 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100861 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100862 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100863}
864
Guido van Rossumc001c092020-04-30 12:12:19 -0700865// type_expressions:
866// | ','.expression+ ',' '*' expression ',' '**' expression
867// | ','.expression+ ',' '*' expression
868// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700869// | '*' expression ',' '**' expression
870// | '*' expression
871// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700872// | ','.expression+
873static asdl_seq*
874type_expressions_rule(Parser *p)
875{
876 if (p->error_indicator) {
877 return NULL;
878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100879 asdl_seq* _res = NULL;
880 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700881 { // ','.expression+ ',' '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300882 if (p->error_indicator) {
883 return NULL;
884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100885 Token * _literal;
886 Token * _literal_1;
887 Token * _literal_2;
888 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700889 asdl_seq * a;
890 expr_ty b;
891 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700892 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100893 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700894 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100895 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100897 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100899 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100901 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700902 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100903 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100905 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700906 )
907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100908 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
909 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700910 p->error_indicator = 1;
911 return NULL;
912 }
913 goto done;
914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100915 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700916 }
917 { // ','.expression+ ',' '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300918 if (p->error_indicator) {
919 return NULL;
920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100921 Token * _literal;
922 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700923 asdl_seq * a;
924 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700925 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100926 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700927 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100928 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700929 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100930 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700931 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100932 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700933 )
934 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100935 _res = _PyPegen_seq_append_to_end ( p , a , b );
936 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700937 p->error_indicator = 1;
938 return NULL;
939 }
940 goto done;
941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100942 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700943 }
944 { // ','.expression+ ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300945 if (p->error_indicator) {
946 return NULL;
947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100948 Token * _literal;
949 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700950 asdl_seq * a;
951 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700952 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100953 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700954 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100955 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700956 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100957 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700958 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100959 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700960 )
961 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100962 _res = _PyPegen_seq_append_to_end ( p , a , b );
963 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700964 p->error_indicator = 1;
965 return NULL;
966 }
967 goto done;
968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100969 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700970 }
Shantanu603d3542020-05-03 22:08:14 -0700971 { // '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300972 if (p->error_indicator) {
973 return NULL;
974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100975 Token * _literal;
976 Token * _literal_1;
977 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700978 expr_ty a;
979 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700980 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100981 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700982 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100983 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700984 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100985 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700986 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100987 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700988 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100989 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700990 )
991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100992 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
993 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700994 p->error_indicator = 1;
995 return NULL;
996 }
997 goto done;
998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100999 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001000 }
1001 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001002 if (p->error_indicator) {
1003 return NULL;
1004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001005 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001006 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001007 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001008 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -07001009 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001010 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001011 )
1012 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001013 _res = _PyPegen_singleton_seq ( p , a );
1014 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001015 p->error_indicator = 1;
1016 return NULL;
1017 }
1018 goto done;
1019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001020 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001021 }
1022 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001023 if (p->error_indicator) {
1024 return NULL;
1025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001026 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001027 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001028 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001029 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -07001030 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001031 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001032 )
1033 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001034 _res = _PyPegen_singleton_seq ( p , a );
1035 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001036 p->error_indicator = 1;
1037 return NULL;
1038 }
1039 goto done;
1040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001041 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001042 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001043 { // ','.expression+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001044 if (p->error_indicator) {
1045 return NULL;
1046 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001047 asdl_seq * _gather_9_var;
1048 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001049 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001050 )
1051 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001052 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001053 goto done;
1054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001055 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001057 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001058 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001059 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001060}
1061
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001062// statements: statement+
1063static asdl_seq*
1064statements_rule(Parser *p)
1065{
1066 if (p->error_indicator) {
1067 return NULL;
1068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001069 asdl_seq* _res = NULL;
1070 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001071 { // statement+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001072 if (p->error_indicator) {
1073 return NULL;
1074 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001075 asdl_seq * a;
1076 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001077 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001078 )
1079 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001080 _res = _PyPegen_seq_flatten ( p , a );
1081 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001082 p->error_indicator = 1;
1083 return NULL;
1084 }
1085 goto done;
1086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001087 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001089 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001090 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001091 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001092}
1093
1094// statement: compound_stmt | simple_stmt
1095static asdl_seq*
1096statement_rule(Parser *p)
1097{
1098 if (p->error_indicator) {
1099 return NULL;
1100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001101 asdl_seq* _res = NULL;
1102 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001103 { // compound_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001104 if (p->error_indicator) {
1105 return NULL;
1106 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001107 stmt_ty a;
1108 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001109 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001110 )
1111 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001112 _res = _PyPegen_singleton_seq ( p , a );
1113 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001114 p->error_indicator = 1;
1115 return NULL;
1116 }
1117 goto done;
1118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001119 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001120 }
1121 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001122 if (p->error_indicator) {
1123 return NULL;
1124 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001125 asdl_seq* simple_stmt_var;
1126 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001127 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001128 )
1129 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001130 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001131 goto done;
1132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001135 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001136 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001137 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001138}
1139
1140// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1141static asdl_seq*
1142statement_newline_rule(Parser *p)
1143{
1144 if (p->error_indicator) {
1145 return NULL;
1146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001147 asdl_seq* _res = NULL;
1148 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001149 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1150 p->error_indicator = 1;
1151 return NULL;
1152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001153 int _start_lineno = p->tokens[_mark]->lineno;
1154 UNUSED(_start_lineno); // Only used by EXTRA macro
1155 int _start_col_offset = p->tokens[_mark]->col_offset;
1156 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001157 { // compound_stmt NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001158 if (p->error_indicator) {
1159 return NULL;
1160 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001161 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001162 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001163 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001164 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001165 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001166 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001167 )
1168 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001169 _res = _PyPegen_singleton_seq ( p , a );
1170 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001171 p->error_indicator = 1;
1172 return NULL;
1173 }
1174 goto done;
1175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001176 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001177 }
1178 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001179 if (p->error_indicator) {
1180 return NULL;
1181 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001182 asdl_seq* simple_stmt_var;
1183 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001184 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001185 )
1186 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001187 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001188 goto done;
1189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001190 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001191 }
1192 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001193 if (p->error_indicator) {
1194 return NULL;
1195 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01001196 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001197 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001198 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001199 )
1200 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001201 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1202 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001203 return NULL;
1204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001205 int _end_lineno = _token->end_lineno;
1206 UNUSED(_end_lineno); // Only used by EXTRA macro
1207 int _end_col_offset = _token->end_col_offset;
1208 UNUSED(_end_col_offset); // Only used by EXTRA macro
1209 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1210 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001211 p->error_indicator = 1;
1212 return NULL;
1213 }
1214 goto done;
1215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001216 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001217 }
1218 { // $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001219 if (p->error_indicator) {
1220 return NULL;
1221 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01001222 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001223 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001224 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001225 )
1226 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001227 _res = _PyPegen_interactive_exit ( p );
1228 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001229 p->error_indicator = 1;
1230 return NULL;
1231 }
1232 goto done;
1233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001234 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001236 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001237 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001238 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001239}
1240
1241// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1242static asdl_seq*
1243simple_stmt_rule(Parser *p)
1244{
1245 if (p->error_indicator) {
1246 return NULL;
1247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001248 asdl_seq* _res = NULL;
1249 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001250 { // small_stmt !';' NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001251 if (p->error_indicator) {
1252 return NULL;
1253 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001254 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001255 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001256 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001257 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001258 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001259 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001260 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001261 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001262 )
1263 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001264 _res = _PyPegen_singleton_seq ( p , a );
1265 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001266 p->error_indicator = 1;
1267 return NULL;
1268 }
1269 goto done;
1270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001271 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001272 }
1273 { // ';'.small_stmt+ ';'? NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001274 if (p->error_indicator) {
1275 return NULL;
1276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001277 void *_opt_var;
1278 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001279 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001280 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001281 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001282 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001283 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001284 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001285 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001286 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001287 )
1288 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001289 _res = a;
1290 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001291 p->error_indicator = 1;
1292 return NULL;
1293 }
1294 goto done;
1295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001296 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001298 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001299 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001300 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001301}
1302
1303// small_stmt:
1304// | assignment
1305// | star_expressions
1306// | &'return' return_stmt
1307// | &('import' | 'from') import_stmt
1308// | &'raise' raise_stmt
1309// | 'pass'
1310// | &'del' del_stmt
1311// | &'yield' yield_stmt
1312// | &'assert' assert_stmt
1313// | 'break'
1314// | 'continue'
1315// | &'global' global_stmt
1316// | &'nonlocal' nonlocal_stmt
1317static stmt_ty
1318small_stmt_rule(Parser *p)
1319{
1320 if (p->error_indicator) {
1321 return NULL;
1322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001323 stmt_ty _res = NULL;
1324 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1325 return _res;
1326 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001327 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1328 p->error_indicator = 1;
1329 return NULL;
1330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001331 int _start_lineno = p->tokens[_mark]->lineno;
1332 UNUSED(_start_lineno); // Only used by EXTRA macro
1333 int _start_col_offset = p->tokens[_mark]->col_offset;
1334 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001335 { // assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001336 if (p->error_indicator) {
1337 return NULL;
1338 }
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001339 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001340 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001341 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001342 )
1343 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001344 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001345 goto done;
1346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001348 }
1349 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001350 if (p->error_indicator) {
1351 return NULL;
1352 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001353 expr_ty e;
1354 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001355 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001356 )
1357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001358 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1359 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001360 return NULL;
1361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001362 int _end_lineno = _token->end_lineno;
1363 UNUSED(_end_lineno); // Only used by EXTRA macro
1364 int _end_col_offset = _token->end_col_offset;
1365 UNUSED(_end_col_offset); // Only used by EXTRA macro
1366 _res = _Py_Expr ( e , EXTRA );
1367 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001368 p->error_indicator = 1;
1369 return NULL;
1370 }
1371 goto done;
1372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001374 }
1375 { // &'return' return_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001376 if (p->error_indicator) {
1377 return NULL;
1378 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001379 stmt_ty return_stmt_var;
1380 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001381 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001382 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001383 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001384 )
1385 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001386 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001387 goto done;
1388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001389 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001390 }
1391 { // &('import' | 'from') import_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001392 if (p->error_indicator) {
1393 return NULL;
1394 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001395 stmt_ty import_stmt_var;
1396 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001397 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001398 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001399 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001400 )
1401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001402 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001403 goto done;
1404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001405 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001406 }
1407 { // &'raise' raise_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001408 if (p->error_indicator) {
1409 return NULL;
1410 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001411 stmt_ty raise_stmt_var;
1412 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001413 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001414 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001415 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001416 )
1417 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001418 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001419 goto done;
1420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001421 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001422 }
1423 { // 'pass'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001424 if (p->error_indicator) {
1425 return NULL;
1426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001427 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001428 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001429 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001430 )
1431 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001432 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1433 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001434 return NULL;
1435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001436 int _end_lineno = _token->end_lineno;
1437 UNUSED(_end_lineno); // Only used by EXTRA macro
1438 int _end_col_offset = _token->end_col_offset;
1439 UNUSED(_end_col_offset); // Only used by EXTRA macro
1440 _res = _Py_Pass ( EXTRA );
1441 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001442 p->error_indicator = 1;
1443 return NULL;
1444 }
1445 goto done;
1446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001447 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001448 }
1449 { // &'del' del_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001450 if (p->error_indicator) {
1451 return NULL;
1452 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001453 stmt_ty del_stmt_var;
1454 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001455 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001457 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001458 )
1459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001460 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001461 goto done;
1462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001463 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001464 }
1465 { // &'yield' yield_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001466 if (p->error_indicator) {
1467 return NULL;
1468 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001469 stmt_ty yield_stmt_var;
1470 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001471 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001472 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001473 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001474 )
1475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001476 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001477 goto done;
1478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001479 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001480 }
1481 { // &'assert' assert_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001482 if (p->error_indicator) {
1483 return NULL;
1484 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001485 stmt_ty assert_stmt_var;
1486 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001487 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001488 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001489 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001490 )
1491 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001492 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001493 goto done;
1494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001495 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001496 }
1497 { // 'break'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001498 if (p->error_indicator) {
1499 return NULL;
1500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001501 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001502 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001503 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001504 )
1505 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001506 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1507 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001508 return NULL;
1509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001510 int _end_lineno = _token->end_lineno;
1511 UNUSED(_end_lineno); // Only used by EXTRA macro
1512 int _end_col_offset = _token->end_col_offset;
1513 UNUSED(_end_col_offset); // Only used by EXTRA macro
1514 _res = _Py_Break ( EXTRA );
1515 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001516 p->error_indicator = 1;
1517 return NULL;
1518 }
1519 goto done;
1520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001521 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001522 }
1523 { // 'continue'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001524 if (p->error_indicator) {
1525 return NULL;
1526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001527 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001528 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001529 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001530 )
1531 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001532 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1533 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001534 return NULL;
1535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001536 int _end_lineno = _token->end_lineno;
1537 UNUSED(_end_lineno); // Only used by EXTRA macro
1538 int _end_col_offset = _token->end_col_offset;
1539 UNUSED(_end_col_offset); // Only used by EXTRA macro
1540 _res = _Py_Continue ( EXTRA );
1541 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001542 p->error_indicator = 1;
1543 return NULL;
1544 }
1545 goto done;
1546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001547 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001548 }
1549 { // &'global' global_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001550 if (p->error_indicator) {
1551 return NULL;
1552 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001553 stmt_ty global_stmt_var;
1554 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001555 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001556 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001557 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001558 )
1559 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001560 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001561 goto done;
1562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001563 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001564 }
1565 { // &'nonlocal' nonlocal_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001566 if (p->error_indicator) {
1567 return NULL;
1568 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001569 stmt_ty nonlocal_stmt_var;
1570 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001571 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001572 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001573 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001574 )
1575 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001576 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001577 goto done;
1578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001579 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001581 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001582 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001583 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1584 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001585}
1586
1587// compound_stmt:
1588// | &('def' | '@' | ASYNC) function_def
1589// | &'if' if_stmt
1590// | &('class' | '@') class_def
1591// | &('with' | ASYNC) with_stmt
1592// | &('for' | ASYNC) for_stmt
1593// | &'try' try_stmt
1594// | &'while' while_stmt
1595static stmt_ty
1596compound_stmt_rule(Parser *p)
1597{
1598 if (p->error_indicator) {
1599 return NULL;
1600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001601 stmt_ty _res = NULL;
1602 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001603 { // &('def' | '@' | ASYNC) function_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001604 if (p->error_indicator) {
1605 return NULL;
1606 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001607 stmt_ty function_def_var;
1608 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001609 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001610 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001611 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001612 )
1613 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001614 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001615 goto done;
1616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001617 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001618 }
1619 { // &'if' if_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001620 if (p->error_indicator) {
1621 return NULL;
1622 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001623 stmt_ty if_stmt_var;
1624 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001625 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001626 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001627 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001628 )
1629 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001630 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001631 goto done;
1632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001633 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001634 }
1635 { // &('class' | '@') class_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001636 if (p->error_indicator) {
1637 return NULL;
1638 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001639 stmt_ty class_def_var;
1640 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001641 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001642 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001643 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001644 )
1645 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001646 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001647 goto done;
1648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001649 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001650 }
1651 { // &('with' | ASYNC) with_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001652 if (p->error_indicator) {
1653 return NULL;
1654 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001655 stmt_ty with_stmt_var;
1656 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001657 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001658 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001659 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001660 )
1661 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001662 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001663 goto done;
1664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001665 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001666 }
1667 { // &('for' | ASYNC) for_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001668 if (p->error_indicator) {
1669 return NULL;
1670 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001671 stmt_ty for_stmt_var;
1672 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001673 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001675 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 )
1677 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001678 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001679 goto done;
1680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001681 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001682 }
1683 { // &'try' try_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001684 if (p->error_indicator) {
1685 return NULL;
1686 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001687 stmt_ty try_stmt_var;
1688 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001689 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001690 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001691 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001692 )
1693 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001694 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001695 goto done;
1696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001697 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001698 }
1699 { // &'while' while_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001700 if (p->error_indicator) {
1701 return NULL;
1702 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001703 stmt_ty while_stmt_var;
1704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001705 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001707 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001708 )
1709 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001710 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001711 goto done;
1712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001713 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001715 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001716 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001717 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001718}
1719
1720// assignment:
1721// | NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001722// | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001723// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001724// | single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001725// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001726static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001727assignment_rule(Parser *p)
1728{
1729 if (p->error_indicator) {
1730 return NULL;
1731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001732 stmt_ty _res = NULL;
1733 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001734 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1735 p->error_indicator = 1;
1736 return NULL;
1737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001738 int _start_lineno = p->tokens[_mark]->lineno;
1739 UNUSED(_start_lineno); // Only used by EXTRA macro
1740 int _start_col_offset = p->tokens[_mark]->col_offset;
1741 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001742 { // NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001743 if (p->error_indicator) {
1744 return NULL;
1745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001746 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001747 expr_ty a;
1748 expr_ty b;
1749 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001751 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001752 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001753 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001754 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001755 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001756 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001757 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001758 )
1759 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001760 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1761 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001762 return NULL;
1763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001764 int _end_lineno = _token->end_lineno;
1765 UNUSED(_end_lineno); // Only used by EXTRA macro
1766 int _end_col_offset = _token->end_col_offset;
1767 UNUSED(_end_col_offset); // Only used by EXTRA macro
1768 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1769 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001770 p->error_indicator = 1;
1771 return NULL;
1772 }
1773 goto done;
1774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001775 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001776 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001777 { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001778 if (p->error_indicator) {
1779 return NULL;
1780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001781 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001782 void *a;
1783 expr_ty b;
1784 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001785 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001786 (a = _tmp_20_rule(p)) // '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001787 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001788 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001789 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001790 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001791 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001792 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001793 )
1794 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001795 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1796 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001797 return NULL;
1798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001799 int _end_lineno = _token->end_lineno;
1800 UNUSED(_end_lineno); // Only used by EXTRA macro
1801 int _end_col_offset = _token->end_col_offset;
1802 UNUSED(_end_col_offset); // Only used by EXTRA macro
1803 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1804 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 p->error_indicator = 1;
1806 return NULL;
1807 }
1808 goto done;
1809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001810 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001811 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001812 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001813 if (p->error_indicator) {
1814 return NULL;
1815 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001816 asdl_seq * a;
1817 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001818 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001819 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001820 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001821 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001822 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001823 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001824 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001825 )
1826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001827 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1828 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001829 return NULL;
1830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001831 int _end_lineno = _token->end_lineno;
1832 UNUSED(_end_lineno); // Only used by EXTRA macro
1833 int _end_col_offset = _token->end_col_offset;
1834 UNUSED(_end_col_offset); // Only used by EXTRA macro
1835 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1836 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001837 p->error_indicator = 1;
1838 return NULL;
1839 }
1840 goto done;
1841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001842 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001843 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001844 { // single_target augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001845 if (p->error_indicator) {
1846 return NULL;
1847 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001848 expr_ty a;
1849 AugOperator* b;
1850 void *c;
1851 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001852 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001853 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001854 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001855 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001856 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001857 )
1858 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001859 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1860 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001861 return NULL;
1862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001863 int _end_lineno = _token->end_lineno;
1864 UNUSED(_end_lineno); // Only used by EXTRA macro
1865 int _end_col_offset = _token->end_col_offset;
1866 UNUSED(_end_col_offset); // Only used by EXTRA macro
1867 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
1868 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001869 p->error_indicator = 1;
1870 return NULL;
1871 }
1872 goto done;
1873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001874 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001875 }
1876 { // invalid_assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001877 if (p->error_indicator) {
1878 return NULL;
1879 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001880 void *invalid_assignment_var;
1881 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001882 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001883 )
1884 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001885 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001886 goto done;
1887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001888 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001890 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001891 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001892 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001893}
1894
1895// augassign:
1896// | '+='
1897// | '-='
1898// | '*='
1899// | '@='
1900// | '/='
1901// | '%='
1902// | '&='
1903// | '|='
1904// | '^='
1905// | '<<='
1906// | '>>='
1907// | '**='
1908// | '//='
1909static AugOperator*
1910augassign_rule(Parser *p)
1911{
1912 if (p->error_indicator) {
1913 return NULL;
1914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001915 AugOperator* _res = NULL;
1916 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001917 { // '+='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001918 if (p->error_indicator) {
1919 return NULL;
1920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001921 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001922 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001923 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001924 )
1925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001926 _res = _PyPegen_augoperator ( p , Add );
1927 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001928 p->error_indicator = 1;
1929 return NULL;
1930 }
1931 goto done;
1932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001934 }
1935 { // '-='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001936 if (p->error_indicator) {
1937 return NULL;
1938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001939 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001940 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001941 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001942 )
1943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001944 _res = _PyPegen_augoperator ( p , Sub );
1945 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001946 p->error_indicator = 1;
1947 return NULL;
1948 }
1949 goto done;
1950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001951 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001952 }
1953 { // '*='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001954 if (p->error_indicator) {
1955 return NULL;
1956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001957 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001958 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001959 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001960 )
1961 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001962 _res = _PyPegen_augoperator ( p , Mult );
1963 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001964 p->error_indicator = 1;
1965 return NULL;
1966 }
1967 goto done;
1968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001969 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001970 }
1971 { // '@='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001972 if (p->error_indicator) {
1973 return NULL;
1974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001975 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001976 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001977 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001978 )
1979 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001980 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1981 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001982 p->error_indicator = 1;
1983 return NULL;
1984 }
1985 goto done;
1986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001987 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001988 }
1989 { // '/='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001990 if (p->error_indicator) {
1991 return NULL;
1992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001993 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001994 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001995 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001996 )
1997 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001998 _res = _PyPegen_augoperator ( p , Div );
1999 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002000 p->error_indicator = 1;
2001 return NULL;
2002 }
2003 goto done;
2004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002005 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002006 }
2007 { // '%='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002008 if (p->error_indicator) {
2009 return NULL;
2010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002011 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002012 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002013 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002014 )
2015 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002016 _res = _PyPegen_augoperator ( p , Mod );
2017 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002018 p->error_indicator = 1;
2019 return NULL;
2020 }
2021 goto done;
2022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002023 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002024 }
2025 { // '&='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002026 if (p->error_indicator) {
2027 return NULL;
2028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002029 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002030 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002031 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002032 )
2033 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002034 _res = _PyPegen_augoperator ( p , BitAnd );
2035 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002036 p->error_indicator = 1;
2037 return NULL;
2038 }
2039 goto done;
2040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002041 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002042 }
2043 { // '|='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002044 if (p->error_indicator) {
2045 return NULL;
2046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002047 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002048 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002049 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002050 )
2051 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002052 _res = _PyPegen_augoperator ( p , BitOr );
2053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002054 p->error_indicator = 1;
2055 return NULL;
2056 }
2057 goto done;
2058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002059 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002060 }
2061 { // '^='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002062 if (p->error_indicator) {
2063 return NULL;
2064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002065 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002066 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002067 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002068 )
2069 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002070 _res = _PyPegen_augoperator ( p , BitXor );
2071 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002072 p->error_indicator = 1;
2073 return NULL;
2074 }
2075 goto done;
2076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002077 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002078 }
2079 { // '<<='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002080 if (p->error_indicator) {
2081 return NULL;
2082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002083 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002084 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002085 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002086 )
2087 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002088 _res = _PyPegen_augoperator ( p , LShift );
2089 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002090 p->error_indicator = 1;
2091 return NULL;
2092 }
2093 goto done;
2094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002095 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002096 }
2097 { // '>>='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002098 if (p->error_indicator) {
2099 return NULL;
2100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002101 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002102 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002103 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002104 )
2105 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002106 _res = _PyPegen_augoperator ( p , RShift );
2107 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002108 p->error_indicator = 1;
2109 return NULL;
2110 }
2111 goto done;
2112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002113 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002114 }
2115 { // '**='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002116 if (p->error_indicator) {
2117 return NULL;
2118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002119 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002120 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002121 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002122 )
2123 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002124 _res = _PyPegen_augoperator ( p , Pow );
2125 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002126 p->error_indicator = 1;
2127 return NULL;
2128 }
2129 goto done;
2130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002131 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002132 }
2133 { // '//='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002134 if (p->error_indicator) {
2135 return NULL;
2136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002137 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002138 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002139 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002140 )
2141 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002142 _res = _PyPegen_augoperator ( p , FloorDiv );
2143 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002144 p->error_indicator = 1;
2145 return NULL;
2146 }
2147 goto done;
2148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002149 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002151 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002152 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002153 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002154}
2155
2156// global_stmt: 'global' ','.NAME+
2157static stmt_ty
2158global_stmt_rule(Parser *p)
2159{
2160 if (p->error_indicator) {
2161 return NULL;
2162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002163 stmt_ty _res = NULL;
2164 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002165 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2166 p->error_indicator = 1;
2167 return NULL;
2168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002169 int _start_lineno = p->tokens[_mark]->lineno;
2170 UNUSED(_start_lineno); // Only used by EXTRA macro
2171 int _start_col_offset = p->tokens[_mark]->col_offset;
2172 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002173 { // 'global' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002174 if (p->error_indicator) {
2175 return NULL;
2176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002177 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002178 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002179 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002180 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002181 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002182 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002183 )
2184 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002185 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2186 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002187 return NULL;
2188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002189 int _end_lineno = _token->end_lineno;
2190 UNUSED(_end_lineno); // Only used by EXTRA macro
2191 int _end_col_offset = _token->end_col_offset;
2192 UNUSED(_end_col_offset); // Only used by EXTRA macro
2193 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2194 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002195 p->error_indicator = 1;
2196 return NULL;
2197 }
2198 goto done;
2199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002200 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002202 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002203 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002204 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002205}
2206
2207// nonlocal_stmt: 'nonlocal' ','.NAME+
2208static stmt_ty
2209nonlocal_stmt_rule(Parser *p)
2210{
2211 if (p->error_indicator) {
2212 return NULL;
2213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002214 stmt_ty _res = NULL;
2215 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002216 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2217 p->error_indicator = 1;
2218 return NULL;
2219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002220 int _start_lineno = p->tokens[_mark]->lineno;
2221 UNUSED(_start_lineno); // Only used by EXTRA macro
2222 int _start_col_offset = p->tokens[_mark]->col_offset;
2223 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002224 { // 'nonlocal' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002225 if (p->error_indicator) {
2226 return NULL;
2227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002228 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002229 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002230 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002231 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002232 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002233 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002234 )
2235 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002236 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2237 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002238 return NULL;
2239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002240 int _end_lineno = _token->end_lineno;
2241 UNUSED(_end_lineno); // Only used by EXTRA macro
2242 int _end_col_offset = _token->end_col_offset;
2243 UNUSED(_end_col_offset); // Only used by EXTRA macro
2244 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2245 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002246 p->error_indicator = 1;
2247 return NULL;
2248 }
2249 goto done;
2250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002256}
2257
2258// yield_stmt: yield_expr
2259static stmt_ty
2260yield_stmt_rule(Parser *p)
2261{
2262 if (p->error_indicator) {
2263 return NULL;
2264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002265 stmt_ty _res = NULL;
2266 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002267 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2268 p->error_indicator = 1;
2269 return NULL;
2270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002271 int _start_lineno = p->tokens[_mark]->lineno;
2272 UNUSED(_start_lineno); // Only used by EXTRA macro
2273 int _start_col_offset = p->tokens[_mark]->col_offset;
2274 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002275 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002276 if (p->error_indicator) {
2277 return NULL;
2278 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002279 expr_ty y;
2280 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002281 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002282 )
2283 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002284 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2285 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002286 return NULL;
2287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002288 int _end_lineno = _token->end_lineno;
2289 UNUSED(_end_lineno); // Only used by EXTRA macro
2290 int _end_col_offset = _token->end_col_offset;
2291 UNUSED(_end_col_offset); // Only used by EXTRA macro
2292 _res = _Py_Expr ( y , EXTRA );
2293 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002294 p->error_indicator = 1;
2295 return NULL;
2296 }
2297 goto done;
2298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002299 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002301 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002302 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002303 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002304}
2305
2306// assert_stmt: 'assert' expression [',' expression]
2307static stmt_ty
2308assert_stmt_rule(Parser *p)
2309{
2310 if (p->error_indicator) {
2311 return NULL;
2312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002313 stmt_ty _res = NULL;
2314 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002315 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2316 p->error_indicator = 1;
2317 return NULL;
2318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002319 int _start_lineno = p->tokens[_mark]->lineno;
2320 UNUSED(_start_lineno); // Only used by EXTRA macro
2321 int _start_col_offset = p->tokens[_mark]->col_offset;
2322 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002323 { // 'assert' expression [',' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002324 if (p->error_indicator) {
2325 return NULL;
2326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002327 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002328 expr_ty a;
2329 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002331 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002332 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002333 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002335 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002336 )
2337 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002338 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2339 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002340 return NULL;
2341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002342 int _end_lineno = _token->end_lineno;
2343 UNUSED(_end_lineno); // Only used by EXTRA macro
2344 int _end_col_offset = _token->end_col_offset;
2345 UNUSED(_end_col_offset); // Only used by EXTRA macro
2346 _res = _Py_Assert ( a , b , EXTRA );
2347 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002348 p->error_indicator = 1;
2349 return NULL;
2350 }
2351 goto done;
2352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002353 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002355 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002356 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002357 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002358}
2359
2360// del_stmt: 'del' del_targets
2361static stmt_ty
2362del_stmt_rule(Parser *p)
2363{
2364 if (p->error_indicator) {
2365 return NULL;
2366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002367 stmt_ty _res = NULL;
2368 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002369 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2370 p->error_indicator = 1;
2371 return NULL;
2372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002373 int _start_lineno = p->tokens[_mark]->lineno;
2374 UNUSED(_start_lineno); // Only used by EXTRA macro
2375 int _start_col_offset = p->tokens[_mark]->col_offset;
2376 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002377 { // 'del' del_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002378 if (p->error_indicator) {
2379 return NULL;
2380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002381 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002382 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002383 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002384 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002385 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002386 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002387 )
2388 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002389 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2390 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002391 return NULL;
2392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002393 int _end_lineno = _token->end_lineno;
2394 UNUSED(_end_lineno); // Only used by EXTRA macro
2395 int _end_col_offset = _token->end_col_offset;
2396 UNUSED(_end_col_offset); // Only used by EXTRA macro
2397 _res = _Py_Delete ( a , EXTRA );
2398 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002399 p->error_indicator = 1;
2400 return NULL;
2401 }
2402 goto done;
2403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002404 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002406 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002407 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002408 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002409}
2410
2411// import_stmt: import_name | import_from
2412static stmt_ty
2413import_stmt_rule(Parser *p)
2414{
2415 if (p->error_indicator) {
2416 return NULL;
2417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002418 stmt_ty _res = NULL;
2419 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002420 { // import_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002421 if (p->error_indicator) {
2422 return NULL;
2423 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002424 stmt_ty import_name_var;
2425 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002426 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002427 )
2428 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002429 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002430 goto done;
2431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002432 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002433 }
2434 { // import_from
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002435 if (p->error_indicator) {
2436 return NULL;
2437 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002438 stmt_ty import_from_var;
2439 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002440 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002441 )
2442 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002443 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002444 goto done;
2445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002446 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002448 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002449 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002450 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002451}
2452
2453// import_name: 'import' dotted_as_names
2454static stmt_ty
2455import_name_rule(Parser *p)
2456{
2457 if (p->error_indicator) {
2458 return NULL;
2459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002460 stmt_ty _res = NULL;
2461 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002462 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2463 p->error_indicator = 1;
2464 return NULL;
2465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002466 int _start_lineno = p->tokens[_mark]->lineno;
2467 UNUSED(_start_lineno); // Only used by EXTRA macro
2468 int _start_col_offset = p->tokens[_mark]->col_offset;
2469 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002470 { // 'import' dotted_as_names
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002471 if (p->error_indicator) {
2472 return NULL;
2473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002474 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002475 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002476 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002477 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002478 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002479 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002480 )
2481 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002482 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2483 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002484 return NULL;
2485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002486 int _end_lineno = _token->end_lineno;
2487 UNUSED(_end_lineno); // Only used by EXTRA macro
2488 int _end_col_offset = _token->end_col_offset;
2489 UNUSED(_end_col_offset); // Only used by EXTRA macro
2490 _res = _Py_Import ( a , EXTRA );
2491 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002492 p->error_indicator = 1;
2493 return NULL;
2494 }
2495 goto done;
2496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002497 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002499 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002500 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002501 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002502}
2503
2504// import_from:
2505// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2506// | 'from' (('.' | '...'))+ 'import' import_from_targets
2507static stmt_ty
2508import_from_rule(Parser *p)
2509{
2510 if (p->error_indicator) {
2511 return NULL;
2512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002513 stmt_ty _res = NULL;
2514 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002515 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2516 p->error_indicator = 1;
2517 return NULL;
2518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002519 int _start_lineno = p->tokens[_mark]->lineno;
2520 UNUSED(_start_lineno); // Only used by EXTRA macro
2521 int _start_col_offset = p->tokens[_mark]->col_offset;
2522 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002523 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002524 if (p->error_indicator) {
2525 return NULL;
2526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002527 Token * _keyword;
2528 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002529 asdl_seq * a;
2530 expr_ty b;
2531 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002532 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002533 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002534 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002535 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002536 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002537 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002538 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002539 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002540 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002541 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002542 )
2543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002544 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2545 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002546 return NULL;
2547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002548 int _end_lineno = _token->end_lineno;
2549 UNUSED(_end_lineno); // Only used by EXTRA macro
2550 int _end_col_offset = _token->end_col_offset;
2551 UNUSED(_end_col_offset); // Only used by EXTRA macro
2552 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002554 p->error_indicator = 1;
2555 return NULL;
2556 }
2557 goto done;
2558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002560 }
2561 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002562 if (p->error_indicator) {
2563 return NULL;
2564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002565 Token * _keyword;
2566 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002567 asdl_seq * a;
2568 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002569 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002570 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002572 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002573 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002574 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002575 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002576 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002577 )
2578 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002579 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2580 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002581 return NULL;
2582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002583 int _end_lineno = _token->end_lineno;
2584 UNUSED(_end_lineno); // Only used by EXTRA macro
2585 int _end_col_offset = _token->end_col_offset;
2586 UNUSED(_end_col_offset); // Only used by EXTRA macro
2587 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2588 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002589 p->error_indicator = 1;
2590 return NULL;
2591 }
2592 goto done;
2593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002594 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002596 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002597 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002598 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002599}
2600
Pablo Galindo275d7e12020-05-21 22:04:54 +01002601// import_from_targets:
2602// | '(' import_from_as_names ','? ')'
2603// | import_from_as_names !','
2604// | '*'
2605// | invalid_import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002606static asdl_seq*
2607import_from_targets_rule(Parser *p)
2608{
2609 if (p->error_indicator) {
2610 return NULL;
2611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002612 asdl_seq* _res = NULL;
2613 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002614 { // '(' import_from_as_names ','? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002615 if (p->error_indicator) {
2616 return NULL;
2617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002618 Token * _literal;
2619 Token * _literal_1;
2620 void *_opt_var;
2621 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002622 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002623 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002624 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002625 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002626 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002627 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002628 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002629 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002630 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002631 )
2632 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002633 _res = a;
2634 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002635 p->error_indicator = 1;
2636 return NULL;
2637 }
2638 goto done;
2639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002640 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002641 }
Pablo Galindo275d7e12020-05-21 22:04:54 +01002642 { // import_from_as_names !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002643 if (p->error_indicator) {
2644 return NULL;
2645 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002646 asdl_seq* import_from_as_names_var;
2647 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002648 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindo275d7e12020-05-21 22:04:54 +01002649 &&
2650 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002651 )
2652 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002653 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002654 goto done;
2655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002656 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002657 }
2658 { // '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002659 if (p->error_indicator) {
2660 return NULL;
2661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002662 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002663 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002664 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002665 )
2666 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002667 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2668 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002669 p->error_indicator = 1;
2670 return NULL;
2671 }
2672 goto done;
2673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002674 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002675 }
Pablo Galindo275d7e12020-05-21 22:04:54 +01002676 { // invalid_import_from_targets
2677 if (p->error_indicator) {
2678 return NULL;
2679 }
2680 void *invalid_import_from_targets_var;
2681 if (
2682 (invalid_import_from_targets_var = invalid_import_from_targets_rule(p)) // invalid_import_from_targets
2683 )
2684 {
2685 _res = invalid_import_from_targets_var;
2686 goto done;
2687 }
2688 p->mark = _mark;
2689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002690 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002691 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002692 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002693}
2694
2695// import_from_as_names: ','.import_from_as_name+
2696static asdl_seq*
2697import_from_as_names_rule(Parser *p)
2698{
2699 if (p->error_indicator) {
2700 return NULL;
2701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002702 asdl_seq* _res = NULL;
2703 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002704 { // ','.import_from_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002705 if (p->error_indicator) {
2706 return NULL;
2707 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002708 asdl_seq * a;
2709 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002710 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002711 )
2712 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002713 _res = a;
2714 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002715 p->error_indicator = 1;
2716 return NULL;
2717 }
2718 goto done;
2719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002720 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002722 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002723 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002724 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002725}
2726
2727// import_from_as_name: NAME ['as' NAME]
2728static alias_ty
2729import_from_as_name_rule(Parser *p)
2730{
2731 if (p->error_indicator) {
2732 return NULL;
2733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002734 alias_ty _res = NULL;
2735 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002736 { // NAME ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002737 if (p->error_indicator) {
2738 return NULL;
2739 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002740 expr_ty a;
2741 void *b;
2742 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002743 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002744 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002745 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002746 )
2747 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002748 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2749 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002750 p->error_indicator = 1;
2751 return NULL;
2752 }
2753 goto done;
2754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002755 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002757 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002758 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002759 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002760}
2761
2762// dotted_as_names: ','.dotted_as_name+
2763static asdl_seq*
2764dotted_as_names_rule(Parser *p)
2765{
2766 if (p->error_indicator) {
2767 return NULL;
2768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002769 asdl_seq* _res = NULL;
2770 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002771 { // ','.dotted_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002772 if (p->error_indicator) {
2773 return NULL;
2774 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002775 asdl_seq * a;
2776 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002777 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002778 )
2779 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002780 _res = a;
2781 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002782 p->error_indicator = 1;
2783 return NULL;
2784 }
2785 goto done;
2786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002787 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002789 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002790 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002791 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002792}
2793
2794// dotted_as_name: dotted_name ['as' NAME]
2795static alias_ty
2796dotted_as_name_rule(Parser *p)
2797{
2798 if (p->error_indicator) {
2799 return NULL;
2800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002801 alias_ty _res = NULL;
2802 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002803 { // dotted_name ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002804 if (p->error_indicator) {
2805 return NULL;
2806 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002807 expr_ty a;
2808 void *b;
2809 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002810 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002811 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002812 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002813 )
2814 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002815 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2816 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002817 p->error_indicator = 1;
2818 return NULL;
2819 }
2820 goto done;
2821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002822 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002824 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002825 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002826 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002827}
2828
2829// Left-recursive
2830// dotted_name: dotted_name '.' NAME | NAME
2831static expr_ty dotted_name_raw(Parser *);
2832static expr_ty
2833dotted_name_rule(Parser *p)
2834{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002835 expr_ty _res = NULL;
2836 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2837 return _res;
2838 int _mark = p->mark;
2839 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002840 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002841 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002842 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002843 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002845 p->mark = _mark;
2846 void *_raw = dotted_name_raw(p);
2847 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002848 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002849 _resmark = p->mark;
2850 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002852 p->mark = _resmark;
2853 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002854}
2855static expr_ty
2856dotted_name_raw(Parser *p)
2857{
2858 if (p->error_indicator) {
2859 return NULL;
2860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002861 expr_ty _res = NULL;
2862 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002863 { // dotted_name '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002864 if (p->error_indicator) {
2865 return NULL;
2866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002867 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002868 expr_ty a;
2869 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002870 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002871 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002872 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002873 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002875 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002876 )
2877 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002878 _res = _PyPegen_join_names_with_dot ( p , a , b );
2879 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002880 p->error_indicator = 1;
2881 return NULL;
2882 }
2883 goto done;
2884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002885 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002886 }
2887 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002888 if (p->error_indicator) {
2889 return NULL;
2890 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002891 expr_ty name_var;
2892 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002893 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002894 )
2895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002896 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002897 goto done;
2898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002899 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002901 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002902 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002903 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002904}
2905
2906// if_stmt:
2907// | 'if' named_expression ':' block elif_stmt
2908// | 'if' named_expression ':' block else_block?
2909static stmt_ty
2910if_stmt_rule(Parser *p)
2911{
2912 if (p->error_indicator) {
2913 return NULL;
2914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002915 stmt_ty _res = NULL;
2916 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002917 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2918 p->error_indicator = 1;
2919 return NULL;
2920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002921 int _start_lineno = p->tokens[_mark]->lineno;
2922 UNUSED(_start_lineno); // Only used by EXTRA macro
2923 int _start_col_offset = p->tokens[_mark]->col_offset;
2924 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002925 { // 'if' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002926 if (p->error_indicator) {
2927 return NULL;
2928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002929 Token * _keyword;
2930 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002931 expr_ty a;
2932 asdl_seq* b;
2933 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002934 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002936 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002937 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002938 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002939 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002941 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002942 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002943 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002944 )
2945 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002946 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2947 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002948 return NULL;
2949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002950 int _end_lineno = _token->end_lineno;
2951 UNUSED(_end_lineno); // Only used by EXTRA macro
2952 int _end_col_offset = _token->end_col_offset;
2953 UNUSED(_end_col_offset); // Only used by EXTRA macro
2954 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2955 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002956 p->error_indicator = 1;
2957 return NULL;
2958 }
2959 goto done;
2960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002961 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002962 }
2963 { // 'if' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002964 if (p->error_indicator) {
2965 return NULL;
2966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002967 Token * _keyword;
2968 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002969 expr_ty a;
2970 asdl_seq* b;
2971 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002972 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002973 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002974 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002975 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002976 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002977 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002978 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002979 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002980 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002981 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002982 )
2983 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002984 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2985 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002986 return NULL;
2987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002988 int _end_lineno = _token->end_lineno;
2989 UNUSED(_end_lineno); // Only used by EXTRA macro
2990 int _end_col_offset = _token->end_col_offset;
2991 UNUSED(_end_col_offset); // Only used by EXTRA macro
2992 _res = _Py_If ( a , b , c , EXTRA );
2993 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002994 p->error_indicator = 1;
2995 return NULL;
2996 }
2997 goto done;
2998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003001 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003002 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003003 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003004}
3005
3006// elif_stmt:
3007// | 'elif' named_expression ':' block elif_stmt
3008// | 'elif' named_expression ':' block else_block?
3009static stmt_ty
3010elif_stmt_rule(Parser *p)
3011{
3012 if (p->error_indicator) {
3013 return NULL;
3014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003015 stmt_ty _res = NULL;
3016 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003017 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3018 p->error_indicator = 1;
3019 return NULL;
3020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003021 int _start_lineno = p->tokens[_mark]->lineno;
3022 UNUSED(_start_lineno); // Only used by EXTRA macro
3023 int _start_col_offset = p->tokens[_mark]->col_offset;
3024 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003025 { // 'elif' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003026 if (p->error_indicator) {
3027 return NULL;
3028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003029 Token * _keyword;
3030 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003031 expr_ty a;
3032 asdl_seq* b;
3033 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003034 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003035 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003036 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003037 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003038 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003039 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003041 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003042 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003043 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003044 )
3045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003046 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3047 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003048 return NULL;
3049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003050 int _end_lineno = _token->end_lineno;
3051 UNUSED(_end_lineno); // Only used by EXTRA macro
3052 int _end_col_offset = _token->end_col_offset;
3053 UNUSED(_end_col_offset); // Only used by EXTRA macro
3054 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3055 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003056 p->error_indicator = 1;
3057 return NULL;
3058 }
3059 goto done;
3060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003061 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003062 }
3063 { // 'elif' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003064 if (p->error_indicator) {
3065 return NULL;
3066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003067 Token * _keyword;
3068 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003069 expr_ty a;
3070 asdl_seq* b;
3071 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003072 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003073 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003074 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003075 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003076 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003077 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003078 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003079 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003080 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003081 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003082 )
3083 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003084 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3085 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003086 return NULL;
3087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003088 int _end_lineno = _token->end_lineno;
3089 UNUSED(_end_lineno); // Only used by EXTRA macro
3090 int _end_col_offset = _token->end_col_offset;
3091 UNUSED(_end_col_offset); // Only used by EXTRA macro
3092 _res = _Py_If ( a , b , c , EXTRA );
3093 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003094 p->error_indicator = 1;
3095 return NULL;
3096 }
3097 goto done;
3098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003099 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003101 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003102 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003103 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003104}
3105
3106// else_block: 'else' ':' block
3107static asdl_seq*
3108else_block_rule(Parser *p)
3109{
3110 if (p->error_indicator) {
3111 return NULL;
3112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003113 asdl_seq* _res = NULL;
3114 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003115 { // 'else' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003116 if (p->error_indicator) {
3117 return NULL;
3118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003119 Token * _keyword;
3120 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003121 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003122 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003123 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003124 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003125 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003126 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003127 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003128 )
3129 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003130 _res = b;
3131 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003132 p->error_indicator = 1;
3133 return NULL;
3134 }
3135 goto done;
3136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003137 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003139 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003140 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003141 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003142}
3143
3144// while_stmt: 'while' named_expression ':' block else_block?
3145static stmt_ty
3146while_stmt_rule(Parser *p)
3147{
3148 if (p->error_indicator) {
3149 return NULL;
3150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003151 stmt_ty _res = NULL;
3152 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003153 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3154 p->error_indicator = 1;
3155 return NULL;
3156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003157 int _start_lineno = p->tokens[_mark]->lineno;
3158 UNUSED(_start_lineno); // Only used by EXTRA macro
3159 int _start_col_offset = p->tokens[_mark]->col_offset;
3160 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003161 { // 'while' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003162 if (p->error_indicator) {
3163 return NULL;
3164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003165 Token * _keyword;
3166 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003167 expr_ty a;
3168 asdl_seq* b;
3169 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003170 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003171 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003172 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003173 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003174 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003175 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003176 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003177 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003178 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003179 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003180 )
3181 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003182 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3183 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003184 return NULL;
3185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003186 int _end_lineno = _token->end_lineno;
3187 UNUSED(_end_lineno); // Only used by EXTRA macro
3188 int _end_col_offset = _token->end_col_offset;
3189 UNUSED(_end_col_offset); // Only used by EXTRA macro
3190 _res = _Py_While ( a , b , c , EXTRA );
3191 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003192 p->error_indicator = 1;
3193 return NULL;
3194 }
3195 goto done;
3196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003197 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003199 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003200 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003201 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003202}
3203
Guido van Rossumc001c092020-04-30 12:12:19 -07003204// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003205// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
3206// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003207static stmt_ty
3208for_stmt_rule(Parser *p)
3209{
3210 if (p->error_indicator) {
3211 return NULL;
3212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003213 stmt_ty _res = NULL;
3214 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003215 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3216 p->error_indicator = 1;
3217 return NULL;
3218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003219 int _start_lineno = p->tokens[_mark]->lineno;
3220 UNUSED(_start_lineno); // Only used by EXTRA macro
3221 int _start_col_offset = p->tokens[_mark]->col_offset;
3222 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003223 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003224 if (p->error_indicator) {
3225 return NULL;
3226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003227 Token * _keyword;
3228 Token * _keyword_1;
3229 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003230 asdl_seq* b;
3231 void *el;
3232 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003233 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003234 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003235 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003236 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003237 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003238 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003239 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003240 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003242 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003243 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003244 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003245 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003246 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003247 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003248 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003249 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003250 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003251 )
3252 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003253 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3254 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003255 return NULL;
3256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003257 int _end_lineno = _token->end_lineno;
3258 UNUSED(_end_lineno); // Only used by EXTRA macro
3259 int _end_col_offset = _token->end_col_offset;
3260 UNUSED(_end_col_offset); // Only used by EXTRA macro
3261 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3262 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003263 p->error_indicator = 1;
3264 return NULL;
3265 }
3266 goto done;
3267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003268 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003269 }
3270 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003271 if (p->error_indicator) {
3272 return NULL;
3273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003274 Token * _keyword;
3275 Token * _keyword_1;
3276 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003277 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003278 asdl_seq* b;
3279 void *el;
3280 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003281 expr_ty t;
3282 void *tc;
3283 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003284 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003286 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003288 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003289 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003290 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003291 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003292 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003293 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003294 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003295 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003296 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003297 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003298 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003299 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003300 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003301 )
3302 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003303 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3304 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003305 return NULL;
3306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003307 int _end_lineno = _token->end_lineno;
3308 UNUSED(_end_lineno); // Only used by EXTRA macro
3309 int _end_col_offset = _token->end_col_offset;
3310 UNUSED(_end_col_offset); // Only used by EXTRA macro
3311 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3312 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003313 p->error_indicator = 1;
3314 return NULL;
3315 }
3316 goto done;
3317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003318 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003320 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003321 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003322 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003323}
3324
3325// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003326// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003327// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003328// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003329// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003330static stmt_ty
3331with_stmt_rule(Parser *p)
3332{
3333 if (p->error_indicator) {
3334 return NULL;
3335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003336 stmt_ty _res = NULL;
3337 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003338 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3339 p->error_indicator = 1;
3340 return NULL;
3341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003342 int _start_lineno = p->tokens[_mark]->lineno;
3343 UNUSED(_start_lineno); // Only used by EXTRA macro
3344 int _start_col_offset = p->tokens[_mark]->col_offset;
3345 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003346 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003347 if (p->error_indicator) {
3348 return NULL;
3349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003350 Token * _keyword;
3351 Token * _literal;
3352 Token * _literal_1;
3353 Token * _literal_2;
3354 void *_opt_var;
3355 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003356 asdl_seq * a;
3357 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003358 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003359 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003360 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003361 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003363 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003364 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003365 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003366 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003367 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003368 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003369 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003370 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003371 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003372 )
3373 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003374 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3375 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003376 return NULL;
3377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003378 int _end_lineno = _token->end_lineno;
3379 UNUSED(_end_lineno); // Only used by EXTRA macro
3380 int _end_col_offset = _token->end_col_offset;
3381 UNUSED(_end_col_offset); // Only used by EXTRA macro
3382 _res = _Py_With ( a , b , NULL , EXTRA );
3383 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003384 p->error_indicator = 1;
3385 return NULL;
3386 }
3387 goto done;
3388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003389 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003390 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003391 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003392 if (p->error_indicator) {
3393 return NULL;
3394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003395 Token * _keyword;
3396 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003397 asdl_seq * a;
3398 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003399 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003400 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003401 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003402 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003403 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003404 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003405 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003406 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003407 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003408 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003409 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003410 )
3411 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003412 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3413 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003414 return NULL;
3415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003416 int _end_lineno = _token->end_lineno;
3417 UNUSED(_end_lineno); // Only used by EXTRA macro
3418 int _end_col_offset = _token->end_col_offset;
3419 UNUSED(_end_col_offset); // Only used by EXTRA macro
3420 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3421 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003422 p->error_indicator = 1;
3423 return NULL;
3424 }
3425 goto done;
3426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003427 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003428 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003429 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003430 if (p->error_indicator) {
3431 return NULL;
3432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003433 Token * _keyword;
3434 Token * _literal;
3435 Token * _literal_1;
3436 Token * _literal_2;
3437 void *_opt_var;
3438 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003439 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003440 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003441 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003443 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003445 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003446 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003447 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003448 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003449 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003450 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003451 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003452 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003453 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003454 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003455 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003457 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003458 )
3459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003460 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3461 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003462 return NULL;
3463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003464 int _end_lineno = _token->end_lineno;
3465 UNUSED(_end_lineno); // Only used by EXTRA macro
3466 int _end_col_offset = _token->end_col_offset;
3467 UNUSED(_end_col_offset); // Only used by EXTRA macro
3468 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3469 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003470 p->error_indicator = 1;
3471 return NULL;
3472 }
3473 goto done;
3474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003475 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003476 }
3477 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003478 if (p->error_indicator) {
3479 return NULL;
3480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003481 Token * _keyword;
3482 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003483 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003484 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003485 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003486 void *tc;
3487 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003488 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003489 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003490 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003491 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003492 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003493 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003494 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003495 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003496 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003497 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003498 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003499 )
3500 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003501 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3502 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003503 return NULL;
3504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003505 int _end_lineno = _token->end_lineno;
3506 UNUSED(_end_lineno); // Only used by EXTRA macro
3507 int _end_col_offset = _token->end_col_offset;
3508 UNUSED(_end_col_offset); // Only used by EXTRA macro
3509 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3510 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003511 p->error_indicator = 1;
3512 return NULL;
3513 }
3514 goto done;
3515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003516 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003518 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003519 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003520 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003521}
3522
3523// with_item: expression ['as' target]
3524static withitem_ty
3525with_item_rule(Parser *p)
3526{
3527 if (p->error_indicator) {
3528 return NULL;
3529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003530 withitem_ty _res = NULL;
3531 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003532 { // expression ['as' target]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003533 if (p->error_indicator) {
3534 return NULL;
3535 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003536 expr_ty e;
3537 void *o;
3538 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003539 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003540 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003541 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003542 )
3543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003544 _res = _Py_withitem ( e , o , p -> arena );
3545 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003546 p->error_indicator = 1;
3547 return NULL;
3548 }
3549 goto done;
3550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003551 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003553 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003554 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003555 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003556}
3557
3558// try_stmt:
3559// | 'try' ':' block finally_block
3560// | 'try' ':' block except_block+ else_block? finally_block?
3561static stmt_ty
3562try_stmt_rule(Parser *p)
3563{
3564 if (p->error_indicator) {
3565 return NULL;
3566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003567 stmt_ty _res = NULL;
3568 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003569 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3570 p->error_indicator = 1;
3571 return NULL;
3572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003573 int _start_lineno = p->tokens[_mark]->lineno;
3574 UNUSED(_start_lineno); // Only used by EXTRA macro
3575 int _start_col_offset = p->tokens[_mark]->col_offset;
3576 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003577 { // 'try' ':' block finally_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003578 if (p->error_indicator) {
3579 return NULL;
3580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003581 Token * _keyword;
3582 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003583 asdl_seq* b;
3584 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003585 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003586 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003587 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003588 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003589 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003590 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003591 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003592 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003593 )
3594 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003595 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3596 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003597 return NULL;
3598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003599 int _end_lineno = _token->end_lineno;
3600 UNUSED(_end_lineno); // Only used by EXTRA macro
3601 int _end_col_offset = _token->end_col_offset;
3602 UNUSED(_end_col_offset); // Only used by EXTRA macro
3603 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3604 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003605 p->error_indicator = 1;
3606 return NULL;
3607 }
3608 goto done;
3609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003610 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003611 }
3612 { // 'try' ':' block except_block+ else_block? finally_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003613 if (p->error_indicator) {
3614 return NULL;
3615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003616 Token * _keyword;
3617 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003618 asdl_seq* b;
3619 void *el;
3620 asdl_seq * ex;
3621 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003622 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003623 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003624 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003625 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003626 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003627 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003628 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003629 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003630 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003631 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003632 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003633 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003634 )
3635 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003636 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3637 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003638 return NULL;
3639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003640 int _end_lineno = _token->end_lineno;
3641 UNUSED(_end_lineno); // Only used by EXTRA macro
3642 int _end_col_offset = _token->end_col_offset;
3643 UNUSED(_end_col_offset); // Only used by EXTRA macro
3644 _res = _Py_Try ( b , ex , el , f , EXTRA );
3645 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003646 p->error_indicator = 1;
3647 return NULL;
3648 }
3649 goto done;
3650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003651 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003653 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003654 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003655 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003656}
3657
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003658// except_block: 'except' expression ['as' NAME] ':' block | 'except' ':' block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003659static excepthandler_ty
3660except_block_rule(Parser *p)
3661{
3662 if (p->error_indicator) {
3663 return NULL;
3664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003665 excepthandler_ty _res = NULL;
3666 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003667 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3668 p->error_indicator = 1;
3669 return NULL;
3670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003671 int _start_lineno = p->tokens[_mark]->lineno;
3672 UNUSED(_start_lineno); // Only used by EXTRA macro
3673 int _start_col_offset = p->tokens[_mark]->col_offset;
3674 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003675 { // 'except' expression ['as' NAME] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003676 if (p->error_indicator) {
3677 return NULL;
3678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003679 Token * _keyword;
3680 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003681 asdl_seq* b;
3682 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003683 void *t;
3684 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003685 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003686 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003687 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003688 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003689 (t = _tmp_48_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003690 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003691 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003692 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003693 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003694 )
3695 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003696 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3697 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003698 return NULL;
3699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003700 int _end_lineno = _token->end_lineno;
3701 UNUSED(_end_lineno); // Only used by EXTRA macro
3702 int _end_col_offset = _token->end_col_offset;
3703 UNUSED(_end_col_offset); // Only used by EXTRA macro
3704 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3705 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003706 p->error_indicator = 1;
3707 return NULL;
3708 }
3709 goto done;
3710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003711 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003712 }
3713 { // 'except' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003714 if (p->error_indicator) {
3715 return NULL;
3716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003717 Token * _keyword;
3718 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003719 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003720 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003721 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003722 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003723 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003724 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003725 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003726 )
3727 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003728 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3729 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003730 return NULL;
3731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003732 int _end_lineno = _token->end_lineno;
3733 UNUSED(_end_lineno); // Only used by EXTRA macro
3734 int _end_col_offset = _token->end_col_offset;
3735 UNUSED(_end_col_offset); // Only used by EXTRA macro
3736 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3737 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003738 p->error_indicator = 1;
3739 return NULL;
3740 }
3741 goto done;
3742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003743 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003745 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003746 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003747 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003748}
3749
3750// finally_block: 'finally' ':' block
3751static asdl_seq*
3752finally_block_rule(Parser *p)
3753{
3754 if (p->error_indicator) {
3755 return NULL;
3756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003757 asdl_seq* _res = NULL;
3758 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003759 { // 'finally' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003760 if (p->error_indicator) {
3761 return NULL;
3762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003763 Token * _keyword;
3764 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003765 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003766 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003767 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003768 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003769 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003770 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003771 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003772 )
3773 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003774 _res = a;
3775 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003776 p->error_indicator = 1;
3777 return NULL;
3778 }
3779 goto done;
3780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003781 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003783 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003784 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003785 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003786}
3787
3788// return_stmt: 'return' star_expressions?
3789static stmt_ty
3790return_stmt_rule(Parser *p)
3791{
3792 if (p->error_indicator) {
3793 return NULL;
3794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003795 stmt_ty _res = NULL;
3796 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003797 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3798 p->error_indicator = 1;
3799 return NULL;
3800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003801 int _start_lineno = p->tokens[_mark]->lineno;
3802 UNUSED(_start_lineno); // Only used by EXTRA macro
3803 int _start_col_offset = p->tokens[_mark]->col_offset;
3804 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003805 { // 'return' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003806 if (p->error_indicator) {
3807 return NULL;
3808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003809 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003810 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003811 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003812 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003813 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003814 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003815 )
3816 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003817 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3818 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003819 return NULL;
3820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003821 int _end_lineno = _token->end_lineno;
3822 UNUSED(_end_lineno); // Only used by EXTRA macro
3823 int _end_col_offset = _token->end_col_offset;
3824 UNUSED(_end_col_offset); // Only used by EXTRA macro
3825 _res = _Py_Return ( a , EXTRA );
3826 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003827 p->error_indicator = 1;
3828 return NULL;
3829 }
3830 goto done;
3831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003832 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003835 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003836 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003837}
3838
3839// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3840static stmt_ty
3841raise_stmt_rule(Parser *p)
3842{
3843 if (p->error_indicator) {
3844 return NULL;
3845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003846 stmt_ty _res = NULL;
3847 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003848 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3849 p->error_indicator = 1;
3850 return NULL;
3851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003852 int _start_lineno = p->tokens[_mark]->lineno;
3853 UNUSED(_start_lineno); // Only used by EXTRA macro
3854 int _start_col_offset = p->tokens[_mark]->col_offset;
3855 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003856 { // 'raise' expression ['from' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003857 if (p->error_indicator) {
3858 return NULL;
3859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003860 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003861 expr_ty a;
3862 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003863 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003864 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003865 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003866 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003867 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003868 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003869 )
3870 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003871 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3872 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003873 return NULL;
3874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003875 int _end_lineno = _token->end_lineno;
3876 UNUSED(_end_lineno); // Only used by EXTRA macro
3877 int _end_col_offset = _token->end_col_offset;
3878 UNUSED(_end_col_offset); // Only used by EXTRA macro
3879 _res = _Py_Raise ( a , b , EXTRA );
3880 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003881 p->error_indicator = 1;
3882 return NULL;
3883 }
3884 goto done;
3885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003886 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003887 }
3888 { // 'raise'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003889 if (p->error_indicator) {
3890 return NULL;
3891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003892 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003893 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003894 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003895 )
3896 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003897 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3898 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003899 return NULL;
3900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003901 int _end_lineno = _token->end_lineno;
3902 UNUSED(_end_lineno); // Only used by EXTRA macro
3903 int _end_col_offset = _token->end_col_offset;
3904 UNUSED(_end_col_offset); // Only used by EXTRA macro
3905 _res = _Py_Raise ( NULL , NULL , EXTRA );
3906 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003907 p->error_indicator = 1;
3908 return NULL;
3909 }
3910 goto done;
3911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003912 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003914 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003915 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003916 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003917}
3918
3919// function_def: decorators function_def_raw | function_def_raw
3920static stmt_ty
3921function_def_rule(Parser *p)
3922{
3923 if (p->error_indicator) {
3924 return NULL;
3925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003926 stmt_ty _res = NULL;
3927 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003928 { // decorators function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003929 if (p->error_indicator) {
3930 return NULL;
3931 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003932 asdl_seq* d;
3933 stmt_ty f;
3934 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003935 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003936 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003937 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003938 )
3939 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003940 _res = _PyPegen_function_def_decorators ( p , d , f );
3941 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003942 p->error_indicator = 1;
3943 return NULL;
3944 }
3945 goto done;
3946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003947 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003948 }
3949 { // function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003950 if (p->error_indicator) {
3951 return NULL;
3952 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003953 stmt_ty function_def_raw_var;
3954 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003955 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003956 )
3957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003958 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003959 goto done;
3960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003961 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003963 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003964 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003965 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003966}
3967
Guido van Rossumc001c092020-04-30 12:12:19 -07003968// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003969// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3970// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003971static stmt_ty
3972function_def_raw_rule(Parser *p)
3973{
3974 if (p->error_indicator) {
3975 return NULL;
3976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003977 stmt_ty _res = NULL;
3978 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003979 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3980 p->error_indicator = 1;
3981 return NULL;
3982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003983 int _start_lineno = p->tokens[_mark]->lineno;
3984 UNUSED(_start_lineno); // Only used by EXTRA macro
3985 int _start_col_offset = p->tokens[_mark]->col_offset;
3986 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003987 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003988 if (p->error_indicator) {
3989 return NULL;
3990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003991 Token * _keyword;
3992 Token * _literal;
3993 Token * _literal_1;
3994 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003995 void *a;
3996 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003997 expr_ty n;
3998 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003999 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004000 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004001 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004003 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004004 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004005 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004006 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004007 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004008 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004009 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004011 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004012 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004013 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004014 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004015 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07004016 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004017 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004018 )
4019 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004020 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4021 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004022 return NULL;
4023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004024 int _end_lineno = _token->end_lineno;
4025 UNUSED(_end_lineno); // Only used by EXTRA macro
4026 int _end_col_offset = _token->end_col_offset;
4027 UNUSED(_end_col_offset); // Only used by EXTRA macro
4028 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4029 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004030 p->error_indicator = 1;
4031 return NULL;
4032 }
4033 goto done;
4034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004035 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004036 }
4037 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004038 if (p->error_indicator) {
4039 return NULL;
4040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004041 Token * _keyword;
4042 Token * _literal;
4043 Token * _literal_1;
4044 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004045 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004046 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004047 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004048 expr_ty n;
4049 void *params;
4050 void *tc;
4051 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004052 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004053 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004054 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004055 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004056 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004057 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004058 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004059 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004060 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004061 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004062 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004063 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004064 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004065 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004066 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004067 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004068 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004069 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004070 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004071 )
4072 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004073 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4074 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004075 return NULL;
4076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004077 int _end_lineno = _token->end_lineno;
4078 UNUSED(_end_lineno); // Only used by EXTRA macro
4079 int _end_col_offset = _token->end_col_offset;
4080 UNUSED(_end_col_offset); // Only used by EXTRA macro
4081 _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 ) );
4082 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004083 p->error_indicator = 1;
4084 return NULL;
4085 }
4086 goto done;
4087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004088 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004090 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004091 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004092 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004093}
4094
Guido van Rossumc001c092020-04-30 12:12:19 -07004095// func_type_comment:
4096// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
4097// | invalid_double_type_comments
4098// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01004099static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07004100func_type_comment_rule(Parser *p)
4101{
4102 if (p->error_indicator) {
4103 return NULL;
4104 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004105 Token* _res = NULL;
4106 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004107 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004108 if (p->error_indicator) {
4109 return NULL;
4110 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01004111 Token * newline_var;
4112 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07004113 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004114 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07004115 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004116 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004117 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004118 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07004119 )
4120 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004121 _res = t;
4122 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004123 p->error_indicator = 1;
4124 return NULL;
4125 }
4126 goto done;
4127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004128 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004129 }
4130 { // invalid_double_type_comments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004131 if (p->error_indicator) {
4132 return NULL;
4133 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004134 void *invalid_double_type_comments_var;
4135 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004136 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07004137 )
4138 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004139 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004140 goto done;
4141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004142 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004143 }
4144 { // TYPE_COMMENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004145 if (p->error_indicator) {
4146 return NULL;
4147 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01004148 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004149 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004150 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004151 )
4152 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004153 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004154 goto done;
4155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004156 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004158 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004159 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004160 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004161}
4162
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004163// params: invalid_parameters | parameters
4164static arguments_ty
4165params_rule(Parser *p)
4166{
4167 if (p->error_indicator) {
4168 return NULL;
4169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004170 arguments_ty _res = NULL;
4171 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004172 { // invalid_parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004173 if (p->error_indicator) {
4174 return NULL;
4175 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004176 void *invalid_parameters_var;
4177 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004178 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004179 )
4180 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004181 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004182 goto done;
4183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004184 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004185 }
4186 { // parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004187 if (p->error_indicator) {
4188 return NULL;
4189 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004190 arguments_ty parameters_var;
4191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004192 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004193 )
4194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004195 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004196 goto done;
4197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004198 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004200 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004201 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004202 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004203}
4204
4205// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07004206// | slash_no_default param_no_default* param_with_default* star_etc?
4207// | slash_with_default param_with_default* star_etc?
4208// | param_no_default+ param_with_default* star_etc?
4209// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004210// | star_etc
4211static arguments_ty
4212parameters_rule(Parser *p)
4213{
4214 if (p->error_indicator) {
4215 return NULL;
4216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004217 arguments_ty _res = NULL;
4218 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004219 { // slash_no_default param_no_default* param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004220 if (p->error_indicator) {
4221 return NULL;
4222 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004223 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004224 asdl_seq * b;
4225 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004226 void *d;
4227 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004228 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004229 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004230 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004231 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004232 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004233 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004234 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004235 )
4236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004237 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
4238 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004239 p->error_indicator = 1;
4240 return NULL;
4241 }
4242 goto done;
4243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004244 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004245 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004246 { // slash_with_default param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004247 if (p->error_indicator) {
4248 return NULL;
4249 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004250 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004251 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004252 void *c;
4253 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004254 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004255 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004256 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004257 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004258 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004259 )
4260 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004261 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
4262 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004263 p->error_indicator = 1;
4264 return NULL;
4265 }
4266 goto done;
4267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004268 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004269 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004270 { // param_no_default+ param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004271 if (p->error_indicator) {
4272 return NULL;
4273 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004274 asdl_seq * a;
4275 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004276 void *c;
4277 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004278 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004279 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004280 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004281 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004282 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004283 )
4284 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004285 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4286 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004287 p->error_indicator = 1;
4288 return NULL;
4289 }
4290 goto done;
4291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004292 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004293 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004294 { // param_with_default+ star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004295 if (p->error_indicator) {
4296 return NULL;
4297 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004298 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004299 void *b;
4300 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004301 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004302 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004303 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004304 )
4305 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004306 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4307 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004308 p->error_indicator = 1;
4309 return NULL;
4310 }
4311 goto done;
4312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004313 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004314 }
4315 { // star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004316 if (p->error_indicator) {
4317 return NULL;
4318 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004319 StarEtc* a;
4320 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004321 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004322 )
4323 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004324 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4325 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004326 p->error_indicator = 1;
4327 return NULL;
4328 }
4329 goto done;
4330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004331 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004333 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004334 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004335 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004336}
4337
Guido van Rossumc001c092020-04-30 12:12:19 -07004338// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004339static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07004340slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004341{
4342 if (p->error_indicator) {
4343 return NULL;
4344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004345 asdl_seq* _res = NULL;
4346 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004347 { // param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004348 if (p->error_indicator) {
4349 return NULL;
4350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004351 Token * _literal;
4352 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004353 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004354 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004355 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004356 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004357 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004358 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004359 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004360 )
4361 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004362 _res = a;
4363 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004364 p->error_indicator = 1;
4365 return NULL;
4366 }
4367 goto done;
4368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004369 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004370 }
4371 { // param_no_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004372 if (p->error_indicator) {
4373 return NULL;
4374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004375 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004376 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004377 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004378 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004379 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004380 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004381 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004382 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004383 )
4384 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004385 _res = a;
4386 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004387 p->error_indicator = 1;
4388 return NULL;
4389 }
4390 goto done;
4391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004392 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004394 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004395 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004396 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004397}
4398
Guido van Rossumc001c092020-04-30 12:12:19 -07004399// slash_with_default:
4400// | param_no_default* param_with_default+ '/' ','
4401// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004402static SlashWithDefault*
4403slash_with_default_rule(Parser *p)
4404{
4405 if (p->error_indicator) {
4406 return NULL;
4407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004408 SlashWithDefault* _res = NULL;
4409 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004410 { // param_no_default* param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004411 if (p->error_indicator) {
4412 return NULL;
4413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004414 Token * _literal;
4415 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004416 asdl_seq * a;
4417 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004418 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004419 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004420 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004421 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004422 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004423 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004424 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004425 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004426 )
4427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004428 _res = _PyPegen_slash_with_default ( p , a , b );
4429 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004430 p->error_indicator = 1;
4431 return NULL;
4432 }
4433 goto done;
4434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004435 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004436 }
4437 { // param_no_default* param_with_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004438 if (p->error_indicator) {
4439 return NULL;
4440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004441 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004442 asdl_seq * a;
4443 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004444 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004445 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004447 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004449 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004450 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004451 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004452 )
4453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004454 _res = _PyPegen_slash_with_default ( p , a , b );
4455 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004456 p->error_indicator = 1;
4457 return NULL;
4458 }
4459 goto done;
4460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004461 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004463 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004464 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004465 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004466}
4467
4468// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004469// | '*' param_no_default param_maybe_default* kwds?
4470// | '*' ',' param_maybe_default+ kwds?
4471// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004472// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004473static StarEtc*
4474star_etc_rule(Parser *p)
4475{
4476 if (p->error_indicator) {
4477 return NULL;
4478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004479 StarEtc* _res = NULL;
4480 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004481 { // '*' param_no_default param_maybe_default* kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004482 if (p->error_indicator) {
4483 return NULL;
4484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004485 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004486 arg_ty a;
4487 asdl_seq * b;
4488 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004489 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004490 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004491 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004492 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004493 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004494 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004495 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004496 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004497 )
4498 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004499 _res = _PyPegen_star_etc ( p , a , b , c );
4500 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004501 p->error_indicator = 1;
4502 return NULL;
4503 }
4504 goto done;
4505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004506 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004507 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004508 { // '*' ',' param_maybe_default+ kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004509 if (p->error_indicator) {
4510 return NULL;
4511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004512 Token * _literal;
4513 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004514 asdl_seq * b;
4515 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004516 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004517 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004518 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004519 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004520 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004521 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004522 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004523 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004524 )
4525 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004526 _res = _PyPegen_star_etc ( p , NULL , b , c );
4527 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004528 p->error_indicator = 1;
4529 return NULL;
4530 }
4531 goto done;
4532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004533 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004534 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004535 { // kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004536 if (p->error_indicator) {
4537 return NULL;
4538 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004539 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004540 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004541 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004542 )
4543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004544 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4545 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004546 p->error_indicator = 1;
4547 return NULL;
4548 }
4549 goto done;
4550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004551 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004552 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004553 { // invalid_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004554 if (p->error_indicator) {
4555 return NULL;
4556 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004557 void *invalid_star_etc_var;
4558 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004559 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004560 )
4561 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004562 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004563 goto done;
4564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004565 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004567 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004568 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004569 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004570}
4571
Guido van Rossumc001c092020-04-30 12:12:19 -07004572// kwds: '**' param_no_default
4573static arg_ty
4574kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004575{
4576 if (p->error_indicator) {
4577 return NULL;
4578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004579 arg_ty _res = NULL;
4580 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004581 { // '**' param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004582 if (p->error_indicator) {
4583 return NULL;
4584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004585 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004586 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004587 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004588 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004589 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004590 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004591 )
4592 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004593 _res = a;
4594 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004595 p->error_indicator = 1;
4596 return NULL;
4597 }
4598 goto done;
4599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004600 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004602 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004603 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004604 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004605}
4606
4607// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4608static arg_ty
4609param_no_default_rule(Parser *p)
4610{
4611 if (p->error_indicator) {
4612 return NULL;
4613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004614 arg_ty _res = NULL;
4615 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004616 { // param ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004617 if (p->error_indicator) {
4618 return NULL;
4619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004620 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004621 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004622 void *tc;
4623 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004624 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004625 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004626 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004627 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004628 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004629 )
4630 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004631 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4632 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004633 p->error_indicator = 1;
4634 return NULL;
4635 }
4636 goto done;
4637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004638 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004639 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004640 { // param TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004641 if (p->error_indicator) {
4642 return NULL;
4643 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004644 arg_ty a;
4645 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004646 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004647 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004648 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004649 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004650 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004651 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004652 )
4653 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004654 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4655 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004656 p->error_indicator = 1;
4657 return NULL;
4658 }
4659 goto done;
4660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004661 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004663 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004664 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004665 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004666}
4667
Guido van Rossumc001c092020-04-30 12:12:19 -07004668// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004669static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004670param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004671{
4672 if (p->error_indicator) {
4673 return NULL;
4674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004675 NameDefaultPair* _res = NULL;
4676 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004677 { // param default ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004678 if (p->error_indicator) {
4679 return NULL;
4680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004681 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004682 arg_ty a;
4683 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004684 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004685 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004686 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004687 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004688 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004689 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004690 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004691 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004692 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004693 )
4694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004695 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4696 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004697 p->error_indicator = 1;
4698 return NULL;
4699 }
4700 goto done;
4701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004702 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004703 }
4704 { // param default TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004705 if (p->error_indicator) {
4706 return NULL;
4707 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004708 arg_ty a;
4709 expr_ty c;
4710 void *tc;
4711 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004712 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004713 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004714 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004715 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004716 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004717 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004718 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004719 )
4720 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004721 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4722 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004723 p->error_indicator = 1;
4724 return NULL;
4725 }
4726 goto done;
4727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004728 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004730 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004731 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004732 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004733}
4734
Guido van Rossumc001c092020-04-30 12:12:19 -07004735// param_maybe_default:
4736// | param default? ',' TYPE_COMMENT?
4737// | param default? TYPE_COMMENT? &')'
4738static NameDefaultPair*
4739param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004740{
4741 if (p->error_indicator) {
4742 return NULL;
4743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004744 NameDefaultPair* _res = NULL;
4745 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004746 { // param default? ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004747 if (p->error_indicator) {
4748 return NULL;
4749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004750 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004751 arg_ty a;
4752 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004753 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004754 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004755 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004756 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004757 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004758 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004759 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004760 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004761 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004762 )
4763 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004764 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4765 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004766 p->error_indicator = 1;
4767 return NULL;
4768 }
4769 goto done;
4770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004771 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004772 }
4773 { // param default? TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004774 if (p->error_indicator) {
4775 return NULL;
4776 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004777 arg_ty a;
4778 void *c;
4779 void *tc;
4780 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004781 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004782 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004783 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004784 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004785 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004786 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004787 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004788 )
4789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004790 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4791 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004792 p->error_indicator = 1;
4793 return NULL;
4794 }
4795 goto done;
4796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004797 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004799 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004800 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004801 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004802}
4803
Guido van Rossumc001c092020-04-30 12:12:19 -07004804// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004805static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004806param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004807{
4808 if (p->error_indicator) {
4809 return NULL;
4810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004811 arg_ty _res = NULL;
4812 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004813 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4814 p->error_indicator = 1;
4815 return NULL;
4816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004817 int _start_lineno = p->tokens[_mark]->lineno;
4818 UNUSED(_start_lineno); // Only used by EXTRA macro
4819 int _start_col_offset = p->tokens[_mark]->col_offset;
4820 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004821 { // NAME annotation?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004822 if (p->error_indicator) {
4823 return NULL;
4824 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004825 expr_ty a;
4826 void *b;
4827 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004828 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004829 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004830 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004831 )
4832 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004833 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4834 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004835 return NULL;
4836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004837 int _end_lineno = _token->end_lineno;
4838 UNUSED(_end_lineno); // Only used by EXTRA macro
4839 int _end_col_offset = _token->end_col_offset;
4840 UNUSED(_end_col_offset); // Only used by EXTRA macro
4841 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4842 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004843 p->error_indicator = 1;
4844 return NULL;
4845 }
4846 goto done;
4847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004848 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004850 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004851 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004852 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004853}
4854
Guido van Rossumc001c092020-04-30 12:12:19 -07004855// annotation: ':' expression
4856static expr_ty
4857annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004858{
4859 if (p->error_indicator) {
4860 return NULL;
4861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004862 expr_ty _res = NULL;
4863 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004864 { // ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004865 if (p->error_indicator) {
4866 return NULL;
4867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004868 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004869 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004870 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004871 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004872 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004873 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004874 )
4875 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004876 _res = a;
4877 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004878 p->error_indicator = 1;
4879 return NULL;
4880 }
4881 goto done;
4882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004883 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004885 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004886 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004887 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004888}
4889
Guido van Rossumc001c092020-04-30 12:12:19 -07004890// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004891static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004892default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004893{
4894 if (p->error_indicator) {
4895 return NULL;
4896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004897 expr_ty _res = NULL;
4898 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004899 { // '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004900 if (p->error_indicator) {
4901 return NULL;
4902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004903 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004904 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004905 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004906 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004907 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004908 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004909 )
4910 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004911 _res = a;
4912 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004913 p->error_indicator = 1;
4914 return NULL;
4915 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004916 goto done;
4917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004918 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004920 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004921 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004922 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004923}
4924
4925// decorators: (('@' named_expression NEWLINE))+
4926static asdl_seq*
4927decorators_rule(Parser *p)
4928{
4929 if (p->error_indicator) {
4930 return NULL;
4931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004932 asdl_seq* _res = NULL;
4933 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004934 { // (('@' named_expression NEWLINE))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004935 if (p->error_indicator) {
4936 return NULL;
4937 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004938 asdl_seq * a;
4939 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004940 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004941 )
4942 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004943 _res = a;
4944 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004945 p->error_indicator = 1;
4946 return NULL;
4947 }
4948 goto done;
4949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004950 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004952 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004953 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004954 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004955}
4956
4957// class_def: decorators class_def_raw | class_def_raw
4958static stmt_ty
4959class_def_rule(Parser *p)
4960{
4961 if (p->error_indicator) {
4962 return NULL;
4963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004964 stmt_ty _res = NULL;
4965 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004966 { // decorators class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004967 if (p->error_indicator) {
4968 return NULL;
4969 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004970 asdl_seq* a;
4971 stmt_ty b;
4972 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004973 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004974 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004975 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004976 )
4977 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004978 _res = _PyPegen_class_def_decorators ( p , a , b );
4979 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004980 p->error_indicator = 1;
4981 return NULL;
4982 }
4983 goto done;
4984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004985 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004986 }
4987 { // class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004988 if (p->error_indicator) {
4989 return NULL;
4990 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004991 stmt_ty class_def_raw_var;
4992 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004993 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004994 )
4995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004996 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004997 goto done;
4998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005001 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005002 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005003 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005004}
5005
5006// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
5007static stmt_ty
5008class_def_raw_rule(Parser *p)
5009{
5010 if (p->error_indicator) {
5011 return NULL;
5012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005013 stmt_ty _res = NULL;
5014 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005015 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5016 p->error_indicator = 1;
5017 return NULL;
5018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005019 int _start_lineno = p->tokens[_mark]->lineno;
5020 UNUSED(_start_lineno); // Only used by EXTRA macro
5021 int _start_col_offset = p->tokens[_mark]->col_offset;
5022 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005023 { // 'class' NAME ['(' arguments? ')'] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005024 if (p->error_indicator) {
5025 return NULL;
5026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005027 Token * _keyword;
5028 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005029 expr_ty a;
5030 void *b;
5031 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005032 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005033 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005034 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005035 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005036 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005037 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005038 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005039 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005041 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005042 )
5043 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005044 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5045 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005046 return NULL;
5047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005048 int _end_lineno = _token->end_lineno;
5049 UNUSED(_end_lineno); // Only used by EXTRA macro
5050 int _end_col_offset = _token->end_col_offset;
5051 UNUSED(_end_col_offset); // Only used by EXTRA macro
5052 _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 );
5053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005054 p->error_indicator = 1;
5055 return NULL;
5056 }
5057 goto done;
5058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005059 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005061 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005062 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005063 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005064}
5065
5066// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
5067static asdl_seq*
5068block_rule(Parser *p)
5069{
5070 if (p->error_indicator) {
5071 return NULL;
5072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005073 asdl_seq* _res = NULL;
5074 if (_PyPegen_is_memoized(p, block_type, &_res))
5075 return _res;
5076 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005077 { // NEWLINE INDENT statements DEDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005078 if (p->error_indicator) {
5079 return NULL;
5080 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005081 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01005082 Token * dedent_var;
5083 Token * indent_var;
5084 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005085 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005086 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005087 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005088 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005089 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005090 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005091 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005092 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005093 )
5094 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005095 _res = a;
5096 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005097 p->error_indicator = 1;
5098 return NULL;
5099 }
5100 goto done;
5101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005102 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005103 }
5104 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005105 if (p->error_indicator) {
5106 return NULL;
5107 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005108 asdl_seq* simple_stmt_var;
5109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005110 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005111 )
5112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005113 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005114 goto done;
5115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005116 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005117 }
5118 { // invalid_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005119 if (p->error_indicator) {
5120 return NULL;
5121 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005122 void *invalid_block_var;
5123 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005124 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005125 )
5126 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005127 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005128 goto done;
5129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005130 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005132 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005133 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005134 _PyPegen_insert_memo(p, _mark, block_type, _res);
5135 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005136}
5137
5138// expressions_list: ','.star_expression+ ','?
5139static asdl_seq*
5140expressions_list_rule(Parser *p)
5141{
5142 if (p->error_indicator) {
5143 return NULL;
5144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005145 asdl_seq* _res = NULL;
5146 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005147 { // ','.star_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005148 if (p->error_indicator) {
5149 return NULL;
5150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005151 void *_opt_var;
5152 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005153 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005154 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005155 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005156 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005157 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005158 )
5159 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005160 _res = a;
5161 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005162 p->error_indicator = 1;
5163 return NULL;
5164 }
5165 goto done;
5166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005167 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005169 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005170 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005171 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005172}
5173
5174// star_expressions:
5175// | star_expression ((',' star_expression))+ ','?
5176// | star_expression ','
5177// | star_expression
5178static expr_ty
5179star_expressions_rule(Parser *p)
5180{
5181 if (p->error_indicator) {
5182 return NULL;
5183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005184 expr_ty _res = NULL;
5185 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005186 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5187 p->error_indicator = 1;
5188 return NULL;
5189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005190 int _start_lineno = p->tokens[_mark]->lineno;
5191 UNUSED(_start_lineno); // Only used by EXTRA macro
5192 int _start_col_offset = p->tokens[_mark]->col_offset;
5193 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005194 { // star_expression ((',' star_expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005195 if (p->error_indicator) {
5196 return NULL;
5197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005198 void *_opt_var;
5199 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005200 expr_ty a;
5201 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005202 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005203 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005204 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005205 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005206 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005207 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005208 )
5209 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005210 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5211 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005212 return NULL;
5213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005214 int _end_lineno = _token->end_lineno;
5215 UNUSED(_end_lineno); // Only used by EXTRA macro
5216 int _end_col_offset = _token->end_col_offset;
5217 UNUSED(_end_col_offset); // Only used by EXTRA macro
5218 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5219 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005220 p->error_indicator = 1;
5221 return NULL;
5222 }
5223 goto done;
5224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005225 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005226 }
5227 { // star_expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005228 if (p->error_indicator) {
5229 return NULL;
5230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005231 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005232 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005234 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005235 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005236 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005237 )
5238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005239 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5240 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005241 return NULL;
5242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005243 int _end_lineno = _token->end_lineno;
5244 UNUSED(_end_lineno); // Only used by EXTRA macro
5245 int _end_col_offset = _token->end_col_offset;
5246 UNUSED(_end_col_offset); // Only used by EXTRA macro
5247 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5248 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005249 p->error_indicator = 1;
5250 return NULL;
5251 }
5252 goto done;
5253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005254 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005255 }
5256 { // star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005257 if (p->error_indicator) {
5258 return NULL;
5259 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005260 expr_ty star_expression_var;
5261 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005262 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005263 )
5264 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005265 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005266 goto done;
5267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005268 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005270 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005271 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005272 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005273}
5274
5275// star_expression: '*' bitwise_or | expression
5276static expr_ty
5277star_expression_rule(Parser *p)
5278{
5279 if (p->error_indicator) {
5280 return NULL;
5281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005282 expr_ty _res = NULL;
5283 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
5284 return _res;
5285 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005286 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5287 p->error_indicator = 1;
5288 return NULL;
5289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005290 int _start_lineno = p->tokens[_mark]->lineno;
5291 UNUSED(_start_lineno); // Only used by EXTRA macro
5292 int _start_col_offset = p->tokens[_mark]->col_offset;
5293 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005294 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005295 if (p->error_indicator) {
5296 return NULL;
5297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005298 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005299 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005300 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005301 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005302 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005303 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005304 )
5305 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005306 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5307 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005308 return NULL;
5309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005310 int _end_lineno = _token->end_lineno;
5311 UNUSED(_end_lineno); // Only used by EXTRA macro
5312 int _end_col_offset = _token->end_col_offset;
5313 UNUSED(_end_col_offset); // Only used by EXTRA macro
5314 _res = _Py_Starred ( a , Load , EXTRA );
5315 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005316 p->error_indicator = 1;
5317 return NULL;
5318 }
5319 goto done;
5320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005321 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005322 }
5323 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005324 if (p->error_indicator) {
5325 return NULL;
5326 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005327 expr_ty expression_var;
5328 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005329 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005330 )
5331 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005332 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005333 goto done;
5334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005335 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005337 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005338 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005339 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
5340 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005341}
5342
5343// star_named_expressions: ','.star_named_expression+ ','?
5344static asdl_seq*
5345star_named_expressions_rule(Parser *p)
5346{
5347 if (p->error_indicator) {
5348 return NULL;
5349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005350 asdl_seq* _res = NULL;
5351 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005352 { // ','.star_named_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005353 if (p->error_indicator) {
5354 return NULL;
5355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005356 void *_opt_var;
5357 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005358 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005360 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005361 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005362 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005363 )
5364 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005365 _res = a;
5366 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005367 p->error_indicator = 1;
5368 return NULL;
5369 }
5370 goto done;
5371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005372 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005374 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005375 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005376 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005377}
5378
5379// star_named_expression: '*' bitwise_or | named_expression
5380static expr_ty
5381star_named_expression_rule(Parser *p)
5382{
5383 if (p->error_indicator) {
5384 return NULL;
5385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005386 expr_ty _res = NULL;
5387 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005388 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5389 p->error_indicator = 1;
5390 return NULL;
5391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005392 int _start_lineno = p->tokens[_mark]->lineno;
5393 UNUSED(_start_lineno); // Only used by EXTRA macro
5394 int _start_col_offset = p->tokens[_mark]->col_offset;
5395 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005396 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005397 if (p->error_indicator) {
5398 return NULL;
5399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005400 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005401 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005402 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005403 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005404 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005405 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005406 )
5407 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005408 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5409 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005410 return NULL;
5411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005412 int _end_lineno = _token->end_lineno;
5413 UNUSED(_end_lineno); // Only used by EXTRA macro
5414 int _end_col_offset = _token->end_col_offset;
5415 UNUSED(_end_col_offset); // Only used by EXTRA macro
5416 _res = _Py_Starred ( a , Load , EXTRA );
5417 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005418 p->error_indicator = 1;
5419 return NULL;
5420 }
5421 goto done;
5422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005423 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005424 }
5425 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005426 if (p->error_indicator) {
5427 return NULL;
5428 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005429 expr_ty named_expression_var;
5430 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005431 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005432 )
5433 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005434 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005435 goto done;
5436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005437 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005439 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005440 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005441 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005442}
5443
5444// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
5445static expr_ty
5446named_expression_rule(Parser *p)
5447{
5448 if (p->error_indicator) {
5449 return NULL;
5450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005451 expr_ty _res = NULL;
5452 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005453 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5454 p->error_indicator = 1;
5455 return NULL;
5456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005457 int _start_lineno = p->tokens[_mark]->lineno;
5458 UNUSED(_start_lineno); // Only used by EXTRA macro
5459 int _start_col_offset = p->tokens[_mark]->col_offset;
5460 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005461 { // NAME ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005462 if (p->error_indicator) {
5463 return NULL;
5464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005465 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005466 expr_ty a;
5467 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005468 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005469 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005470 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005471 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005472 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005473 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005474 )
5475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005476 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5477 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005478 return NULL;
5479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005480 int _end_lineno = _token->end_lineno;
5481 UNUSED(_end_lineno); // Only used by EXTRA macro
5482 int _end_col_offset = _token->end_col_offset;
5483 UNUSED(_end_col_offset); // Only used by EXTRA macro
5484 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5485 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005486 p->error_indicator = 1;
5487 return NULL;
5488 }
5489 goto done;
5490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005491 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005492 }
5493 { // expression !':='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005494 if (p->error_indicator) {
5495 return NULL;
5496 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005497 expr_ty expression_var;
5498 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005499 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005500 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005501 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005502 )
5503 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005504 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005505 goto done;
5506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005508 }
5509 { // invalid_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005510 if (p->error_indicator) {
5511 return NULL;
5512 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005513 void *invalid_named_expression_var;
5514 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005515 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005516 )
5517 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005518 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005519 goto done;
5520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005521 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005523 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005524 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005525 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005526}
5527
5528// annotated_rhs: yield_expr | star_expressions
5529static expr_ty
5530annotated_rhs_rule(Parser *p)
5531{
5532 if (p->error_indicator) {
5533 return NULL;
5534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005535 expr_ty _res = NULL;
5536 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005537 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005538 if (p->error_indicator) {
5539 return NULL;
5540 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005541 expr_ty yield_expr_var;
5542 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005543 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005544 )
5545 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005546 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005547 goto done;
5548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005549 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005550 }
5551 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005552 if (p->error_indicator) {
5553 return NULL;
5554 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005555 expr_ty star_expressions_var;
5556 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005557 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005558 )
5559 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005560 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005561 goto done;
5562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005563 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005565 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005566 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005567 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005568}
5569
5570// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5571static expr_ty
5572expressions_rule(Parser *p)
5573{
5574 if (p->error_indicator) {
5575 return NULL;
5576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005577 expr_ty _res = NULL;
5578 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005579 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5580 p->error_indicator = 1;
5581 return NULL;
5582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005583 int _start_lineno = p->tokens[_mark]->lineno;
5584 UNUSED(_start_lineno); // Only used by EXTRA macro
5585 int _start_col_offset = p->tokens[_mark]->col_offset;
5586 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005587 { // expression ((',' expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005588 if (p->error_indicator) {
5589 return NULL;
5590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005591 void *_opt_var;
5592 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 expr_ty a;
5594 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005595 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005596 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005597 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005598 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005599 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005600 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005601 )
5602 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005603 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5604 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005605 return NULL;
5606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005607 int _end_lineno = _token->end_lineno;
5608 UNUSED(_end_lineno); // Only used by EXTRA macro
5609 int _end_col_offset = _token->end_col_offset;
5610 UNUSED(_end_col_offset); // Only used by EXTRA macro
5611 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5612 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005613 p->error_indicator = 1;
5614 return NULL;
5615 }
5616 goto done;
5617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005618 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005619 }
5620 { // expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005621 if (p->error_indicator) {
5622 return NULL;
5623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005624 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005625 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005626 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005627 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005628 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005629 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005630 )
5631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005632 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5633 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005634 return NULL;
5635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005636 int _end_lineno = _token->end_lineno;
5637 UNUSED(_end_lineno); // Only used by EXTRA macro
5638 int _end_col_offset = _token->end_col_offset;
5639 UNUSED(_end_col_offset); // Only used by EXTRA macro
5640 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5641 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005642 p->error_indicator = 1;
5643 return NULL;
5644 }
5645 goto done;
5646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005647 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005648 }
5649 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005650 if (p->error_indicator) {
5651 return NULL;
5652 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005653 expr_ty expression_var;
5654 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005655 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005656 )
5657 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005658 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005659 goto done;
5660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005661 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005663 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005664 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005665 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005666}
5667
5668// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5669static expr_ty
5670expression_rule(Parser *p)
5671{
5672 if (p->error_indicator) {
5673 return NULL;
5674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005675 expr_ty _res = NULL;
5676 if (_PyPegen_is_memoized(p, expression_type, &_res))
5677 return _res;
5678 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005679 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5680 p->error_indicator = 1;
5681 return NULL;
5682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005683 int _start_lineno = p->tokens[_mark]->lineno;
5684 UNUSED(_start_lineno); // Only used by EXTRA macro
5685 int _start_col_offset = p->tokens[_mark]->col_offset;
5686 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005687 { // disjunction 'if' disjunction 'else' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005688 if (p->error_indicator) {
5689 return NULL;
5690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005691 Token * _keyword;
5692 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005693 expr_ty a;
5694 expr_ty b;
5695 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005696 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005697 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005698 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005699 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005700 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005701 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005702 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005703 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005704 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005705 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005706 )
5707 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005708 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5709 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005710 return NULL;
5711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005712 int _end_lineno = _token->end_lineno;
5713 UNUSED(_end_lineno); // Only used by EXTRA macro
5714 int _end_col_offset = _token->end_col_offset;
5715 UNUSED(_end_col_offset); // Only used by EXTRA macro
5716 _res = _Py_IfExp ( b , a , c , EXTRA );
5717 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005718 p->error_indicator = 1;
5719 return NULL;
5720 }
5721 goto done;
5722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005723 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005724 }
5725 { // disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005726 if (p->error_indicator) {
5727 return NULL;
5728 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005729 expr_ty disjunction_var;
5730 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005731 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005732 )
5733 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005734 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005735 goto done;
5736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005737 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005738 }
5739 { // lambdef
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005740 if (p->error_indicator) {
5741 return NULL;
5742 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005743 expr_ty lambdef_var;
5744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005745 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005746 )
5747 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005748 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005749 goto done;
5750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005751 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005753 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005754 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005755 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5756 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005757}
5758
5759// lambdef: 'lambda' lambda_parameters? ':' expression
5760static expr_ty
5761lambdef_rule(Parser *p)
5762{
5763 if (p->error_indicator) {
5764 return NULL;
5765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005766 expr_ty _res = NULL;
5767 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005768 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5769 p->error_indicator = 1;
5770 return NULL;
5771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005772 int _start_lineno = p->tokens[_mark]->lineno;
5773 UNUSED(_start_lineno); // Only used by EXTRA macro
5774 int _start_col_offset = p->tokens[_mark]->col_offset;
5775 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005776 { // 'lambda' lambda_parameters? ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005777 if (p->error_indicator) {
5778 return NULL;
5779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005780 Token * _keyword;
5781 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005782 void *a;
5783 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005784 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005785 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005786 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005787 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005788 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005789 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005790 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005791 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005792 )
5793 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005794 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5795 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005796 return NULL;
5797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005798 int _end_lineno = _token->end_lineno;
5799 UNUSED(_end_lineno); // Only used by EXTRA macro
5800 int _end_col_offset = _token->end_col_offset;
5801 UNUSED(_end_col_offset); // Only used by EXTRA macro
5802 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5803 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005804 p->error_indicator = 1;
5805 return NULL;
5806 }
5807 goto done;
5808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005809 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005811 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005812 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005813 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005814}
5815
5816// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005817// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5818// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5819// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5820// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005821// | lambda_star_etc
5822static arguments_ty
5823lambda_parameters_rule(Parser *p)
5824{
5825 if (p->error_indicator) {
5826 return NULL;
5827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005828 arguments_ty _res = NULL;
5829 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005830 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005831 if (p->error_indicator) {
5832 return NULL;
5833 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005834 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005835 asdl_seq * b;
5836 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837 void *d;
5838 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005839 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005840 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005841 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005842 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005843 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005844 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005845 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005846 )
5847 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005848 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5849 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005850 p->error_indicator = 1;
5851 return NULL;
5852 }
5853 goto done;
5854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005855 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005856 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005857 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005858 if (p->error_indicator) {
5859 return NULL;
5860 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005861 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005862 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005863 void *c;
5864 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005865 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005866 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005867 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005868 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005869 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005870 )
5871 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005872 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5873 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005874 p->error_indicator = 1;
5875 return NULL;
5876 }
5877 goto done;
5878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005879 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005880 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005881 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005882 if (p->error_indicator) {
5883 return NULL;
5884 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005885 asdl_seq * a;
5886 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005887 void *c;
5888 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005889 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005890 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005891 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005893 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005894 )
5895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005896 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5897 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005898 p->error_indicator = 1;
5899 return NULL;
5900 }
5901 goto done;
5902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005903 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005904 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005905 { // lambda_param_with_default+ lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005906 if (p->error_indicator) {
5907 return NULL;
5908 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005909 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005910 void *b;
5911 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005912 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005913 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005914 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005915 )
5916 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005917 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5918 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005919 p->error_indicator = 1;
5920 return NULL;
5921 }
5922 goto done;
5923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005924 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005925 }
5926 { // lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005927 if (p->error_indicator) {
5928 return NULL;
5929 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005930 StarEtc* a;
5931 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005932 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005933 )
5934 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005935 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5936 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005937 p->error_indicator = 1;
5938 return NULL;
5939 }
5940 goto done;
5941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005942 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005944 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005945 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005946 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005947}
5948
Guido van Rossum3941d972020-05-01 09:42:03 -07005949// lambda_slash_no_default:
5950// | lambda_param_no_default+ '/' ','
5951// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005952static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005953lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005954{
5955 if (p->error_indicator) {
5956 return NULL;
5957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005958 asdl_seq* _res = NULL;
5959 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005960 { // lambda_param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005961 if (p->error_indicator) {
5962 return NULL;
5963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005964 Token * _literal;
5965 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005966 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005967 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005968 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005969 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005970 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005971 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005972 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005973 )
5974 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005975 _res = a;
5976 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005977 p->error_indicator = 1;
5978 return NULL;
5979 }
5980 goto done;
5981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005982 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005983 }
5984 { // lambda_param_no_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005985 if (p->error_indicator) {
5986 return NULL;
5987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005988 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005989 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005990 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005991 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005992 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005993 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005994 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005995 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005996 )
5997 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005998 _res = a;
5999 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006000 p->error_indicator = 1;
6001 return NULL;
6002 }
6003 goto done;
6004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006005 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006007 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006008 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006009 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006010}
6011
Guido van Rossum3941d972020-05-01 09:42:03 -07006012// lambda_slash_with_default:
6013// | lambda_param_no_default* lambda_param_with_default+ '/' ','
6014// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006015static SlashWithDefault*
6016lambda_slash_with_default_rule(Parser *p)
6017{
6018 if (p->error_indicator) {
6019 return NULL;
6020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006021 SlashWithDefault* _res = NULL;
6022 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006023 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006024 if (p->error_indicator) {
6025 return NULL;
6026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006027 Token * _literal;
6028 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07006029 asdl_seq * a;
6030 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006031 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006032 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006033 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006034 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006035 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006036 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006037 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006038 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006039 )
6040 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006041 _res = _PyPegen_slash_with_default ( p , a , b );
6042 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006043 p->error_indicator = 1;
6044 return NULL;
6045 }
6046 goto done;
6047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006048 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006049 }
6050 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006051 if (p->error_indicator) {
6052 return NULL;
6053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006054 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006055 asdl_seq * a;
6056 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07006057 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006058 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07006059 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006060 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07006061 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006062 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07006063 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006064 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006065 )
6066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006067 _res = _PyPegen_slash_with_default ( p , a , b );
6068 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006069 p->error_indicator = 1;
6070 return NULL;
6071 }
6072 goto done;
6073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006074 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006076 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006077 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006078 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006079}
6080
6081// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07006082// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
6083// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
6084// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006085// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006086static StarEtc*
6087lambda_star_etc_rule(Parser *p)
6088{
6089 if (p->error_indicator) {
6090 return NULL;
6091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006092 StarEtc* _res = NULL;
6093 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006094 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006095 if (p->error_indicator) {
6096 return NULL;
6097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006098 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006099 arg_ty a;
6100 asdl_seq * b;
6101 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006102 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006103 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006104 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006105 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006106 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006107 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006108 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006109 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006110 )
6111 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006112 _res = _PyPegen_star_etc ( p , a , b , c );
6113 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006114 p->error_indicator = 1;
6115 return NULL;
6116 }
6117 goto done;
6118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006119 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006120 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006121 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006122 if (p->error_indicator) {
6123 return NULL;
6124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006125 Token * _literal;
6126 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006127 asdl_seq * b;
6128 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006129 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006130 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006131 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006132 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006133 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006134 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006135 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006136 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006137 )
6138 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006139 _res = _PyPegen_star_etc ( p , NULL , b , c );
6140 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006141 p->error_indicator = 1;
6142 return NULL;
6143 }
6144 goto done;
6145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006146 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006147 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006148 { // lambda_kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006149 if (p->error_indicator) {
6150 return NULL;
6151 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006152 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006153 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006154 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006155 )
6156 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006157 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
6158 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006159 p->error_indicator = 1;
6160 return NULL;
6161 }
6162 goto done;
6163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006164 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006165 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006166 { // invalid_lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006167 if (p->error_indicator) {
6168 return NULL;
6169 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006170 void *invalid_lambda_star_etc_var;
6171 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006172 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006173 )
6174 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006175 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006176 goto done;
6177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006178 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006180 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006181 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006182 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006183}
6184
Guido van Rossum3941d972020-05-01 09:42:03 -07006185// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006186static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07006187lambda_kwds_rule(Parser *p)
6188{
6189 if (p->error_indicator) {
6190 return NULL;
6191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006192 arg_ty _res = NULL;
6193 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006194 { // '**' lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006195 if (p->error_indicator) {
6196 return NULL;
6197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006198 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006199 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07006200 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006201 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07006202 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006203 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07006204 )
6205 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006206 _res = a;
6207 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006208 p->error_indicator = 1;
6209 return NULL;
6210 }
6211 goto done;
6212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006213 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006215 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006216 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006217 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006218}
6219
6220// lambda_param_no_default: lambda_param ',' | lambda_param &':'
6221static arg_ty
6222lambda_param_no_default_rule(Parser *p)
6223{
6224 if (p->error_indicator) {
6225 return NULL;
6226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006227 arg_ty _res = NULL;
6228 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006229 { // lambda_param ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006230 if (p->error_indicator) {
6231 return NULL;
6232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006233 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006234 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07006235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006236 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006237 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006238 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006239 )
6240 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006241 _res = a;
6242 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006243 p->error_indicator = 1;
6244 return NULL;
6245 }
6246 goto done;
6247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006248 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006249 }
6250 { // lambda_param &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006251 if (p->error_indicator) {
6252 return NULL;
6253 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006254 arg_ty a;
6255 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006256 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006257 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006258 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006259 )
6260 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006261 _res = a;
6262 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006263 p->error_indicator = 1;
6264 return NULL;
6265 }
6266 goto done;
6267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006268 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006270 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006271 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006272 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006273}
6274
6275// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
6276static NameDefaultPair*
6277lambda_param_with_default_rule(Parser *p)
6278{
6279 if (p->error_indicator) {
6280 return NULL;
6281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006282 NameDefaultPair* _res = NULL;
6283 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006284 { // lambda_param default ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006285 if (p->error_indicator) {
6286 return NULL;
6287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006288 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006289 arg_ty a;
6290 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07006291 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006292 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006293 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006294 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07006295 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006296 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006297 )
6298 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006299 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6300 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006301 p->error_indicator = 1;
6302 return NULL;
6303 }
6304 goto done;
6305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006306 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006307 }
6308 { // lambda_param default &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006309 if (p->error_indicator) {
6310 return NULL;
6311 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006312 arg_ty a;
6313 expr_ty c;
6314 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006315 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006316 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006317 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07006318 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006319 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006320 )
6321 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006322 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6323 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006324 p->error_indicator = 1;
6325 return NULL;
6326 }
6327 goto done;
6328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006329 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006331 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006332 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006333 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006334}
6335
6336// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
6337static NameDefaultPair*
6338lambda_param_maybe_default_rule(Parser *p)
6339{
6340 if (p->error_indicator) {
6341 return NULL;
6342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006343 NameDefaultPair* _res = NULL;
6344 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006345 { // lambda_param default? ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006346 if (p->error_indicator) {
6347 return NULL;
6348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006349 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006350 arg_ty a;
6351 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07006352 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006353 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006354 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006355 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07006356 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006357 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006358 )
6359 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006360 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6361 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006362 p->error_indicator = 1;
6363 return NULL;
6364 }
6365 goto done;
6366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006367 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006368 }
6369 { // lambda_param default? &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006370 if (p->error_indicator) {
6371 return NULL;
6372 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006373 arg_ty a;
6374 void *c;
6375 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006376 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006378 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07006379 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006380 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006381 )
6382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006383 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6384 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006385 p->error_indicator = 1;
6386 return NULL;
6387 }
6388 goto done;
6389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006390 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006392 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006393 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006394 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006395}
6396
6397// lambda_param: NAME
6398static arg_ty
6399lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006400{
6401 if (p->error_indicator) {
6402 return NULL;
6403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006404 arg_ty _res = NULL;
6405 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006406 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6407 p->error_indicator = 1;
6408 return NULL;
6409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006410 int _start_lineno = p->tokens[_mark]->lineno;
6411 UNUSED(_start_lineno); // Only used by EXTRA macro
6412 int _start_col_offset = p->tokens[_mark]->col_offset;
6413 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006414 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006415 if (p->error_indicator) {
6416 return NULL;
6417 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006418 expr_ty a;
6419 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006420 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006421 )
6422 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006423 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6424 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006425 return NULL;
6426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006427 int _end_lineno = _token->end_lineno;
6428 UNUSED(_end_lineno); // Only used by EXTRA macro
6429 int _end_col_offset = _token->end_col_offset;
6430 UNUSED(_end_col_offset); // Only used by EXTRA macro
6431 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
6432 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006433 p->error_indicator = 1;
6434 return NULL;
6435 }
6436 goto done;
6437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006438 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006440 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006441 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006442 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006443}
6444
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006445// disjunction: conjunction (('or' conjunction))+ | conjunction
6446static expr_ty
6447disjunction_rule(Parser *p)
6448{
6449 if (p->error_indicator) {
6450 return NULL;
6451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006452 expr_ty _res = NULL;
6453 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
6454 return _res;
6455 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006456 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6457 p->error_indicator = 1;
6458 return NULL;
6459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006460 int _start_lineno = p->tokens[_mark]->lineno;
6461 UNUSED(_start_lineno); // Only used by EXTRA macro
6462 int _start_col_offset = p->tokens[_mark]->col_offset;
6463 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006464 { // conjunction (('or' conjunction))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006465 if (p->error_indicator) {
6466 return NULL;
6467 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006468 expr_ty a;
6469 asdl_seq * b;
6470 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006471 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006472 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006473 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006474 )
6475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006476 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6477 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006478 return NULL;
6479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006480 int _end_lineno = _token->end_lineno;
6481 UNUSED(_end_lineno); // Only used by EXTRA macro
6482 int _end_col_offset = _token->end_col_offset;
6483 UNUSED(_end_col_offset); // Only used by EXTRA macro
6484 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
6485 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006486 p->error_indicator = 1;
6487 return NULL;
6488 }
6489 goto done;
6490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006491 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006492 }
6493 { // conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006494 if (p->error_indicator) {
6495 return NULL;
6496 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006497 expr_ty conjunction_var;
6498 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006499 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006500 )
6501 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006502 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006503 goto done;
6504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006505 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006507 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006508 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006509 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
6510 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006511}
6512
6513// conjunction: inversion (('and' inversion))+ | inversion
6514static expr_ty
6515conjunction_rule(Parser *p)
6516{
6517 if (p->error_indicator) {
6518 return NULL;
6519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006520 expr_ty _res = NULL;
6521 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
6522 return _res;
6523 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006524 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6525 p->error_indicator = 1;
6526 return NULL;
6527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006528 int _start_lineno = p->tokens[_mark]->lineno;
6529 UNUSED(_start_lineno); // Only used by EXTRA macro
6530 int _start_col_offset = p->tokens[_mark]->col_offset;
6531 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006532 { // inversion (('and' inversion))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006533 if (p->error_indicator) {
6534 return NULL;
6535 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006536 expr_ty a;
6537 asdl_seq * b;
6538 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006539 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006540 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006541 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006542 )
6543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006544 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6545 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006546 return NULL;
6547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006548 int _end_lineno = _token->end_lineno;
6549 UNUSED(_end_lineno); // Only used by EXTRA macro
6550 int _end_col_offset = _token->end_col_offset;
6551 UNUSED(_end_col_offset); // Only used by EXTRA macro
6552 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
6553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006554 p->error_indicator = 1;
6555 return NULL;
6556 }
6557 goto done;
6558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006560 }
6561 { // inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006562 if (p->error_indicator) {
6563 return NULL;
6564 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006565 expr_ty inversion_var;
6566 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006567 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006568 )
6569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006570 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006571 goto done;
6572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006573 p->mark = _mark;
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 Galindoac7a92c2020-05-10 05:34:50 +01006577 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
6578 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006579}
6580
6581// inversion: 'not' inversion | comparison
6582static expr_ty
6583inversion_rule(Parser *p)
6584{
6585 if (p->error_indicator) {
6586 return NULL;
6587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006588 expr_ty _res = NULL;
6589 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6590 return _res;
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;
6594 return NULL;
6595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006596 int _start_lineno = p->tokens[_mark]->lineno;
6597 UNUSED(_start_lineno); // Only used by EXTRA macro
6598 int _start_col_offset = p->tokens[_mark]->col_offset;
6599 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006600 { // 'not' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006601 if (p->error_indicator) {
6602 return NULL;
6603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006604 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006605 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006606 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006607 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006608 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006609 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006610 )
6611 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006612 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6613 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006614 return NULL;
6615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006616 int _end_lineno = _token->end_lineno;
6617 UNUSED(_end_lineno); // Only used by EXTRA macro
6618 int _end_col_offset = _token->end_col_offset;
6619 UNUSED(_end_col_offset); // Only used by EXTRA macro
6620 _res = _Py_UnaryOp ( Not , a , EXTRA );
6621 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006622 p->error_indicator = 1;
6623 return NULL;
6624 }
6625 goto done;
6626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006627 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006628 }
6629 { // comparison
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006630 if (p->error_indicator) {
6631 return NULL;
6632 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006633 expr_ty comparison_var;
6634 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006635 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006636 )
6637 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006638 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006639 goto done;
6640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006641 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006643 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006644 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006645 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6646 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006647}
6648
6649// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6650static expr_ty
6651comparison_rule(Parser *p)
6652{
6653 if (p->error_indicator) {
6654 return NULL;
6655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006656 expr_ty _res = NULL;
6657 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006658 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6659 p->error_indicator = 1;
6660 return NULL;
6661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006662 int _start_lineno = p->tokens[_mark]->lineno;
6663 UNUSED(_start_lineno); // Only used by EXTRA macro
6664 int _start_col_offset = p->tokens[_mark]->col_offset;
6665 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006666 { // bitwise_or compare_op_bitwise_or_pair+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006667 if (p->error_indicator) {
6668 return NULL;
6669 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006670 expr_ty a;
6671 asdl_seq * b;
6672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006673 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006675 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006676 )
6677 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006678 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6679 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006680 return NULL;
6681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006682 int _end_lineno = _token->end_lineno;
6683 UNUSED(_end_lineno); // Only used by EXTRA macro
6684 int _end_col_offset = _token->end_col_offset;
6685 UNUSED(_end_col_offset); // Only used by EXTRA macro
6686 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6687 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006688 p->error_indicator = 1;
6689 return NULL;
6690 }
6691 goto done;
6692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006693 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006694 }
6695 { // bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006696 if (p->error_indicator) {
6697 return NULL;
6698 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006699 expr_ty bitwise_or_var;
6700 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006701 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006702 )
6703 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006704 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006705 goto done;
6706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006707 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006709 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006710 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006711 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006712}
6713
6714// compare_op_bitwise_or_pair:
6715// | eq_bitwise_or
6716// | noteq_bitwise_or
6717// | lte_bitwise_or
6718// | lt_bitwise_or
6719// | gte_bitwise_or
6720// | gt_bitwise_or
6721// | notin_bitwise_or
6722// | in_bitwise_or
6723// | isnot_bitwise_or
6724// | is_bitwise_or
6725static CmpopExprPair*
6726compare_op_bitwise_or_pair_rule(Parser *p)
6727{
6728 if (p->error_indicator) {
6729 return NULL;
6730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006731 CmpopExprPair* _res = NULL;
6732 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006733 { // eq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006734 if (p->error_indicator) {
6735 return NULL;
6736 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006737 CmpopExprPair* eq_bitwise_or_var;
6738 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006739 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006740 )
6741 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006742 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006743 goto done;
6744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006745 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006746 }
6747 { // noteq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006748 if (p->error_indicator) {
6749 return NULL;
6750 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006751 CmpopExprPair* noteq_bitwise_or_var;
6752 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006753 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006754 )
6755 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006756 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006757 goto done;
6758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006759 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006760 }
6761 { // lte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006762 if (p->error_indicator) {
6763 return NULL;
6764 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006765 CmpopExprPair* lte_bitwise_or_var;
6766 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006767 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006768 )
6769 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006770 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006771 goto done;
6772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006773 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006774 }
6775 { // lt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006776 if (p->error_indicator) {
6777 return NULL;
6778 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006779 CmpopExprPair* lt_bitwise_or_var;
6780 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006781 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006782 )
6783 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006784 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006785 goto done;
6786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006787 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006788 }
6789 { // gte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006790 if (p->error_indicator) {
6791 return NULL;
6792 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006793 CmpopExprPair* gte_bitwise_or_var;
6794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006795 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006796 )
6797 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006798 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006799 goto done;
6800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006801 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006802 }
6803 { // gt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006804 if (p->error_indicator) {
6805 return NULL;
6806 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006807 CmpopExprPair* gt_bitwise_or_var;
6808 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006809 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006810 )
6811 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006812 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006813 goto done;
6814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006815 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006816 }
6817 { // notin_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006818 if (p->error_indicator) {
6819 return NULL;
6820 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006821 CmpopExprPair* notin_bitwise_or_var;
6822 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006823 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006824 )
6825 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006826 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006827 goto done;
6828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006829 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006830 }
6831 { // in_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006832 if (p->error_indicator) {
6833 return NULL;
6834 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006835 CmpopExprPair* in_bitwise_or_var;
6836 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006837 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006838 )
6839 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006840 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006841 goto done;
6842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006843 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006844 }
6845 { // isnot_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006846 if (p->error_indicator) {
6847 return NULL;
6848 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006849 CmpopExprPair* isnot_bitwise_or_var;
6850 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006851 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006852 )
6853 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006854 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006855 goto done;
6856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006857 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006858 }
6859 { // is_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006860 if (p->error_indicator) {
6861 return NULL;
6862 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006863 CmpopExprPair* is_bitwise_or_var;
6864 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006865 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006866 )
6867 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006868 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006869 goto done;
6870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006871 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006873 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006874 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006875 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006876}
6877
6878// eq_bitwise_or: '==' bitwise_or
6879static CmpopExprPair*
6880eq_bitwise_or_rule(Parser *p)
6881{
6882 if (p->error_indicator) {
6883 return NULL;
6884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006885 CmpopExprPair* _res = NULL;
6886 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006887 { // '==' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006888 if (p->error_indicator) {
6889 return NULL;
6890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006891 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006892 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006893 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006894 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006895 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006896 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006897 )
6898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006899 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6900 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006901 p->error_indicator = 1;
6902 return NULL;
6903 }
6904 goto done;
6905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006906 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006908 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006909 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006910 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006911}
6912
Pablo Galindo2b74c832020-04-27 18:02:07 +01006913// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006914static CmpopExprPair*
6915noteq_bitwise_or_rule(Parser *p)
6916{
6917 if (p->error_indicator) {
6918 return NULL;
6919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006920 CmpopExprPair* _res = NULL;
6921 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006922 { // ('!=') bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006923 if (p->error_indicator) {
6924 return NULL;
6925 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006926 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006927 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006928 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006929 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006930 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006931 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006932 )
6933 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006934 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
6935 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006936 p->error_indicator = 1;
6937 return NULL;
6938 }
6939 goto done;
6940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006941 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006943 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006944 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006945 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006946}
6947
6948// lte_bitwise_or: '<=' bitwise_or
6949static CmpopExprPair*
6950lte_bitwise_or_rule(Parser *p)
6951{
6952 if (p->error_indicator) {
6953 return NULL;
6954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006955 CmpopExprPair* _res = NULL;
6956 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006957 { // '<=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006958 if (p->error_indicator) {
6959 return NULL;
6960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006961 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006962 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006963 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006964 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006965 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006966 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006967 )
6968 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006969 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6970 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006971 p->error_indicator = 1;
6972 return NULL;
6973 }
6974 goto done;
6975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006976 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006978 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006979 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006980 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006981}
6982
6983// lt_bitwise_or: '<' bitwise_or
6984static CmpopExprPair*
6985lt_bitwise_or_rule(Parser *p)
6986{
6987 if (p->error_indicator) {
6988 return NULL;
6989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006990 CmpopExprPair* _res = NULL;
6991 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006992 { // '<' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006993 if (p->error_indicator) {
6994 return NULL;
6995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006996 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006997 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006998 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006999 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007000 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007001 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007002 )
7003 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007004 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
7005 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007006 p->error_indicator = 1;
7007 return NULL;
7008 }
7009 goto done;
7010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007011 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007013 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007014 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007015 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007016}
7017
7018// gte_bitwise_or: '>=' bitwise_or
7019static CmpopExprPair*
7020gte_bitwise_or_rule(Parser *p)
7021{
7022 if (p->error_indicator) {
7023 return NULL;
7024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007025 CmpopExprPair* _res = NULL;
7026 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007027 { // '>=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007028 if (p->error_indicator) {
7029 return NULL;
7030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007031 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007032 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007033 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007034 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007035 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007036 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007037 )
7038 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007039 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
7040 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007041 p->error_indicator = 1;
7042 return NULL;
7043 }
7044 goto done;
7045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007046 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007048 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007049 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007050 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007051}
7052
7053// gt_bitwise_or: '>' bitwise_or
7054static CmpopExprPair*
7055gt_bitwise_or_rule(Parser *p)
7056{
7057 if (p->error_indicator) {
7058 return NULL;
7059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007060 CmpopExprPair* _res = NULL;
7061 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007062 { // '>' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007063 if (p->error_indicator) {
7064 return NULL;
7065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007066 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007067 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007068 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007069 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007070 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007071 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007072 )
7073 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007074 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
7075 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007076 p->error_indicator = 1;
7077 return NULL;
7078 }
7079 goto done;
7080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007083 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007084 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007085 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007086}
7087
7088// notin_bitwise_or: 'not' 'in' bitwise_or
7089static CmpopExprPair*
7090notin_bitwise_or_rule(Parser *p)
7091{
7092 if (p->error_indicator) {
7093 return NULL;
7094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007095 CmpopExprPair* _res = NULL;
7096 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007097 { // 'not' 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007098 if (p->error_indicator) {
7099 return NULL;
7100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007101 Token * _keyword;
7102 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007103 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007104 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007105 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007106 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007107 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007108 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007109 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007110 )
7111 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007112 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
7113 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007114 p->error_indicator = 1;
7115 return NULL;
7116 }
7117 goto done;
7118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007119 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007121 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007122 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007123 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007124}
7125
7126// in_bitwise_or: 'in' bitwise_or
7127static CmpopExprPair*
7128in_bitwise_or_rule(Parser *p)
7129{
7130 if (p->error_indicator) {
7131 return NULL;
7132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007133 CmpopExprPair* _res = NULL;
7134 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007135 { // 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007136 if (p->error_indicator) {
7137 return NULL;
7138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007139 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007140 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007141 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007142 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007143 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007144 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007145 )
7146 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007147 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
7148 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007149 p->error_indicator = 1;
7150 return NULL;
7151 }
7152 goto done;
7153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007154 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007156 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007157 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007158 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007159}
7160
7161// isnot_bitwise_or: 'is' 'not' bitwise_or
7162static CmpopExprPair*
7163isnot_bitwise_or_rule(Parser *p)
7164{
7165 if (p->error_indicator) {
7166 return NULL;
7167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007168 CmpopExprPair* _res = NULL;
7169 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007170 { // 'is' 'not' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007171 if (p->error_indicator) {
7172 return NULL;
7173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007174 Token * _keyword;
7175 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007176 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007177 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007178 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007179 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007180 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007181 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007182 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007183 )
7184 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007185 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
7186 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007187 p->error_indicator = 1;
7188 return NULL;
7189 }
7190 goto done;
7191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007192 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007194 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007195 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007196 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007197}
7198
7199// is_bitwise_or: 'is' bitwise_or
7200static CmpopExprPair*
7201is_bitwise_or_rule(Parser *p)
7202{
7203 if (p->error_indicator) {
7204 return NULL;
7205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007206 CmpopExprPair* _res = NULL;
7207 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007208 { // 'is' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007209 if (p->error_indicator) {
7210 return NULL;
7211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007212 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007213 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007214 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007215 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007216 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007217 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007218 )
7219 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007220 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
7221 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007222 p->error_indicator = 1;
7223 return NULL;
7224 }
7225 goto done;
7226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007227 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007229 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007230 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007231 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007232}
7233
7234// Left-recursive
7235// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
7236static expr_ty bitwise_or_raw(Parser *);
7237static expr_ty
7238bitwise_or_rule(Parser *p)
7239{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007240 expr_ty _res = NULL;
7241 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
7242 return _res;
7243 int _mark = p->mark;
7244 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007245 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007246 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007247 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007248 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007250 p->mark = _mark;
7251 void *_raw = bitwise_or_raw(p);
7252 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007253 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007254 _resmark = p->mark;
7255 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007257 p->mark = _resmark;
7258 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007259}
7260static expr_ty
7261bitwise_or_raw(Parser *p)
7262{
7263 if (p->error_indicator) {
7264 return NULL;
7265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007266 expr_ty _res = NULL;
7267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7269 p->error_indicator = 1;
7270 return NULL;
7271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007272 int _start_lineno = p->tokens[_mark]->lineno;
7273 UNUSED(_start_lineno); // Only used by EXTRA macro
7274 int _start_col_offset = p->tokens[_mark]->col_offset;
7275 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007276 { // bitwise_or '|' bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007277 if (p->error_indicator) {
7278 return NULL;
7279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007280 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007281 expr_ty a;
7282 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007283 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007284 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007286 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007288 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007289 )
7290 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007291 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7292 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007293 return NULL;
7294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007295 int _end_lineno = _token->end_lineno;
7296 UNUSED(_end_lineno); // Only used by EXTRA macro
7297 int _end_col_offset = _token->end_col_offset;
7298 UNUSED(_end_col_offset); // Only used by EXTRA macro
7299 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
7300 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007301 p->error_indicator = 1;
7302 return NULL;
7303 }
7304 goto done;
7305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007306 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007307 }
7308 { // bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007309 if (p->error_indicator) {
7310 return NULL;
7311 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007312 expr_ty bitwise_xor_var;
7313 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007314 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007315 )
7316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007317 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007318 goto done;
7319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007320 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007322 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007323 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007324 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007325}
7326
7327// Left-recursive
7328// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
7329static expr_ty bitwise_xor_raw(Parser *);
7330static expr_ty
7331bitwise_xor_rule(Parser *p)
7332{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007333 expr_ty _res = NULL;
7334 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
7335 return _res;
7336 int _mark = p->mark;
7337 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007338 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007339 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007340 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007341 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007343 p->mark = _mark;
7344 void *_raw = bitwise_xor_raw(p);
7345 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007346 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007347 _resmark = p->mark;
7348 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007350 p->mark = _resmark;
7351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007352}
7353static expr_ty
7354bitwise_xor_raw(Parser *p)
7355{
7356 if (p->error_indicator) {
7357 return NULL;
7358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007359 expr_ty _res = NULL;
7360 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007361 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7362 p->error_indicator = 1;
7363 return NULL;
7364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007365 int _start_lineno = p->tokens[_mark]->lineno;
7366 UNUSED(_start_lineno); // Only used by EXTRA macro
7367 int _start_col_offset = p->tokens[_mark]->col_offset;
7368 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007369 { // bitwise_xor '^' bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007370 if (p->error_indicator) {
7371 return NULL;
7372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007373 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007374 expr_ty a;
7375 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007376 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007377 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007378 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007379 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007380 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007381 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007382 )
7383 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007384 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7385 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007386 return NULL;
7387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007388 int _end_lineno = _token->end_lineno;
7389 UNUSED(_end_lineno); // Only used by EXTRA macro
7390 int _end_col_offset = _token->end_col_offset;
7391 UNUSED(_end_col_offset); // Only used by EXTRA macro
7392 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
7393 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007394 p->error_indicator = 1;
7395 return NULL;
7396 }
7397 goto done;
7398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007399 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007400 }
7401 { // bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007402 if (p->error_indicator) {
7403 return NULL;
7404 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007405 expr_ty bitwise_and_var;
7406 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007407 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007408 )
7409 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007410 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007411 goto done;
7412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007413 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007415 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007416 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007417 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007418}
7419
7420// Left-recursive
7421// bitwise_and: bitwise_and '&' shift_expr | shift_expr
7422static expr_ty bitwise_and_raw(Parser *);
7423static expr_ty
7424bitwise_and_rule(Parser *p)
7425{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007426 expr_ty _res = NULL;
7427 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
7428 return _res;
7429 int _mark = p->mark;
7430 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007431 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007432 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007433 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007434 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007436 p->mark = _mark;
7437 void *_raw = bitwise_and_raw(p);
7438 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007439 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007440 _resmark = p->mark;
7441 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007443 p->mark = _resmark;
7444 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007445}
7446static expr_ty
7447bitwise_and_raw(Parser *p)
7448{
7449 if (p->error_indicator) {
7450 return NULL;
7451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007452 expr_ty _res = NULL;
7453 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007454 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7455 p->error_indicator = 1;
7456 return NULL;
7457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007458 int _start_lineno = p->tokens[_mark]->lineno;
7459 UNUSED(_start_lineno); // Only used by EXTRA macro
7460 int _start_col_offset = p->tokens[_mark]->col_offset;
7461 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007462 { // bitwise_and '&' shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007463 if (p->error_indicator) {
7464 return NULL;
7465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007466 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007467 expr_ty a;
7468 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007469 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007470 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007471 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007472 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007473 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007474 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007475 )
7476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007477 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7478 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007479 return NULL;
7480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007481 int _end_lineno = _token->end_lineno;
7482 UNUSED(_end_lineno); // Only used by EXTRA macro
7483 int _end_col_offset = _token->end_col_offset;
7484 UNUSED(_end_col_offset); // Only used by EXTRA macro
7485 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
7486 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007487 p->error_indicator = 1;
7488 return NULL;
7489 }
7490 goto done;
7491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007492 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007493 }
7494 { // shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007495 if (p->error_indicator) {
7496 return NULL;
7497 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007498 expr_ty shift_expr_var;
7499 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007500 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007501 )
7502 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007503 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007504 goto done;
7505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007506 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007508 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007509 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007510 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007511}
7512
7513// Left-recursive
7514// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
7515static expr_ty shift_expr_raw(Parser *);
7516static expr_ty
7517shift_expr_rule(Parser *p)
7518{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007519 expr_ty _res = NULL;
7520 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
7521 return _res;
7522 int _mark = p->mark;
7523 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007524 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007525 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007526 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007527 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007529 p->mark = _mark;
7530 void *_raw = shift_expr_raw(p);
7531 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007532 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007533 _resmark = p->mark;
7534 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007536 p->mark = _resmark;
7537 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007538}
7539static expr_ty
7540shift_expr_raw(Parser *p)
7541{
7542 if (p->error_indicator) {
7543 return NULL;
7544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007545 expr_ty _res = NULL;
7546 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007547 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7548 p->error_indicator = 1;
7549 return NULL;
7550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007551 int _start_lineno = p->tokens[_mark]->lineno;
7552 UNUSED(_start_lineno); // Only used by EXTRA macro
7553 int _start_col_offset = p->tokens[_mark]->col_offset;
7554 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007555 { // shift_expr '<<' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007556 if (p->error_indicator) {
7557 return NULL;
7558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007559 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007560 expr_ty a;
7561 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007562 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007563 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007564 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007565 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007567 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007568 )
7569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007570 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7571 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007572 return NULL;
7573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007574 int _end_lineno = _token->end_lineno;
7575 UNUSED(_end_lineno); // Only used by EXTRA macro
7576 int _end_col_offset = _token->end_col_offset;
7577 UNUSED(_end_col_offset); // Only used by EXTRA macro
7578 _res = _Py_BinOp ( a , LShift , b , EXTRA );
7579 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007580 p->error_indicator = 1;
7581 return NULL;
7582 }
7583 goto done;
7584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007585 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007586 }
7587 { // shift_expr '>>' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007588 if (p->error_indicator) {
7589 return NULL;
7590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007591 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007592 expr_ty a;
7593 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007594 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007595 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007596 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007597 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007598 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007599 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007600 )
7601 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007602 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7603 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007604 return NULL;
7605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007606 int _end_lineno = _token->end_lineno;
7607 UNUSED(_end_lineno); // Only used by EXTRA macro
7608 int _end_col_offset = _token->end_col_offset;
7609 UNUSED(_end_col_offset); // Only used by EXTRA macro
7610 _res = _Py_BinOp ( a , RShift , b , EXTRA );
7611 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007612 p->error_indicator = 1;
7613 return NULL;
7614 }
7615 goto done;
7616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007617 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007618 }
7619 { // sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007620 if (p->error_indicator) {
7621 return NULL;
7622 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007623 expr_ty sum_var;
7624 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007625 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007626 )
7627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007628 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007629 goto done;
7630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007631 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007633 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007634 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007635 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007636}
7637
7638// Left-recursive
7639// sum: sum '+' term | sum '-' term | term
7640static expr_ty sum_raw(Parser *);
7641static expr_ty
7642sum_rule(Parser *p)
7643{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007644 expr_ty _res = NULL;
7645 if (_PyPegen_is_memoized(p, sum_type, &_res))
7646 return _res;
7647 int _mark = p->mark;
7648 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007649 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007650 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007651 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007652 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007654 p->mark = _mark;
7655 void *_raw = sum_raw(p);
7656 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007657 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007658 _resmark = p->mark;
7659 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007661 p->mark = _resmark;
7662 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007663}
7664static expr_ty
7665sum_raw(Parser *p)
7666{
7667 if (p->error_indicator) {
7668 return NULL;
7669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007670 expr_ty _res = NULL;
7671 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007672 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7673 p->error_indicator = 1;
7674 return NULL;
7675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007676 int _start_lineno = p->tokens[_mark]->lineno;
7677 UNUSED(_start_lineno); // Only used by EXTRA macro
7678 int _start_col_offset = p->tokens[_mark]->col_offset;
7679 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007680 { // sum '+' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007681 if (p->error_indicator) {
7682 return NULL;
7683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007684 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007685 expr_ty a;
7686 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007687 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007688 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007689 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007690 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007691 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007692 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007693 )
7694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007695 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7696 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007697 return NULL;
7698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007699 int _end_lineno = _token->end_lineno;
7700 UNUSED(_end_lineno); // Only used by EXTRA macro
7701 int _end_col_offset = _token->end_col_offset;
7702 UNUSED(_end_col_offset); // Only used by EXTRA macro
7703 _res = _Py_BinOp ( a , Add , b , EXTRA );
7704 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007705 p->error_indicator = 1;
7706 return NULL;
7707 }
7708 goto done;
7709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007710 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007711 }
7712 { // sum '-' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007713 if (p->error_indicator) {
7714 return NULL;
7715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007716 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007717 expr_ty a;
7718 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007719 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007720 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007721 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007722 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007723 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007724 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007725 )
7726 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007727 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7728 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007729 return NULL;
7730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007731 int _end_lineno = _token->end_lineno;
7732 UNUSED(_end_lineno); // Only used by EXTRA macro
7733 int _end_col_offset = _token->end_col_offset;
7734 UNUSED(_end_col_offset); // Only used by EXTRA macro
7735 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7736 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007737 p->error_indicator = 1;
7738 return NULL;
7739 }
7740 goto done;
7741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007742 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007743 }
7744 { // term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007745 if (p->error_indicator) {
7746 return NULL;
7747 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007748 expr_ty term_var;
7749 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007750 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007751 )
7752 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007753 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007754 goto done;
7755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007756 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007758 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007759 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007760 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007761}
7762
7763// Left-recursive
7764// term:
7765// | term '*' factor
7766// | term '/' factor
7767// | term '//' factor
7768// | term '%' factor
7769// | term '@' factor
7770// | factor
7771static expr_ty term_raw(Parser *);
7772static expr_ty
7773term_rule(Parser *p)
7774{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007775 expr_ty _res = NULL;
7776 if (_PyPegen_is_memoized(p, term_type, &_res))
7777 return _res;
7778 int _mark = p->mark;
7779 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007780 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007781 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007782 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007783 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007785 p->mark = _mark;
7786 void *_raw = term_raw(p);
7787 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007788 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007789 _resmark = p->mark;
7790 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007792 p->mark = _resmark;
7793 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007794}
7795static expr_ty
7796term_raw(Parser *p)
7797{
7798 if (p->error_indicator) {
7799 return NULL;
7800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007801 expr_ty _res = NULL;
7802 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007803 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7804 p->error_indicator = 1;
7805 return NULL;
7806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007807 int _start_lineno = p->tokens[_mark]->lineno;
7808 UNUSED(_start_lineno); // Only used by EXTRA macro
7809 int _start_col_offset = p->tokens[_mark]->col_offset;
7810 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007811 { // term '*' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007812 if (p->error_indicator) {
7813 return NULL;
7814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007815 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007816 expr_ty a;
7817 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007818 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007819 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007820 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007821 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007822 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007823 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007824 )
7825 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007826 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7827 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007828 return NULL;
7829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007830 int _end_lineno = _token->end_lineno;
7831 UNUSED(_end_lineno); // Only used by EXTRA macro
7832 int _end_col_offset = _token->end_col_offset;
7833 UNUSED(_end_col_offset); // Only used by EXTRA macro
7834 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7835 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007836 p->error_indicator = 1;
7837 return NULL;
7838 }
7839 goto done;
7840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007841 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007842 }
7843 { // term '/' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007844 if (p->error_indicator) {
7845 return NULL;
7846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007847 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007848 expr_ty a;
7849 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007850 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007851 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007852 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007853 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007854 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007855 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007856 )
7857 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007858 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7859 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007860 return NULL;
7861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007862 int _end_lineno = _token->end_lineno;
7863 UNUSED(_end_lineno); // Only used by EXTRA macro
7864 int _end_col_offset = _token->end_col_offset;
7865 UNUSED(_end_col_offset); // Only used by EXTRA macro
7866 _res = _Py_BinOp ( a , Div , b , EXTRA );
7867 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007868 p->error_indicator = 1;
7869 return NULL;
7870 }
7871 goto done;
7872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007873 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007874 }
7875 { // term '//' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007876 if (p->error_indicator) {
7877 return NULL;
7878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007879 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007880 expr_ty a;
7881 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007882 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007883 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007884 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007885 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007886 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007887 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007888 )
7889 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007890 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7891 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007892 return NULL;
7893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007894 int _end_lineno = _token->end_lineno;
7895 UNUSED(_end_lineno); // Only used by EXTRA macro
7896 int _end_col_offset = _token->end_col_offset;
7897 UNUSED(_end_col_offset); // Only used by EXTRA macro
7898 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7899 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007900 p->error_indicator = 1;
7901 return NULL;
7902 }
7903 goto done;
7904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007905 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007906 }
7907 { // term '%' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007908 if (p->error_indicator) {
7909 return NULL;
7910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007911 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007912 expr_ty a;
7913 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007914 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007915 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007916 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007917 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007918 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007919 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007920 )
7921 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007922 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7923 if (_token == NULL) {
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_BinOp ( a , Mod , b , EXTRA );
7931 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007932 p->error_indicator = 1;
7933 return NULL;
7934 }
7935 goto done;
7936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007937 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007938 }
7939 { // term '@' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007940 if (p->error_indicator) {
7941 return NULL;
7942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007943 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007944 expr_ty a;
7945 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007946 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007947 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007948 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007949 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007950 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007951 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007952 )
7953 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007954 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7955 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007956 return NULL;
7957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007958 int _end_lineno = _token->end_lineno;
7959 UNUSED(_end_lineno); // Only used by EXTRA macro
7960 int _end_col_offset = _token->end_col_offset;
7961 UNUSED(_end_col_offset); // Only used by EXTRA macro
7962 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7963 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007964 p->error_indicator = 1;
7965 return NULL;
7966 }
7967 goto done;
7968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007969 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007970 }
7971 { // factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007972 if (p->error_indicator) {
7973 return NULL;
7974 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007975 expr_ty factor_var;
7976 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007977 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007978 )
7979 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007980 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007981 goto done;
7982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007983 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007985 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007986 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007987 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007988}
7989
7990// factor: '+' factor | '-' factor | '~' factor | power
7991static expr_ty
7992factor_rule(Parser *p)
7993{
7994 if (p->error_indicator) {
7995 return NULL;
7996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007997 expr_ty _res = NULL;
7998 if (_PyPegen_is_memoized(p, factor_type, &_res))
7999 return _res;
8000 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008001 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8002 p->error_indicator = 1;
8003 return NULL;
8004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008005 int _start_lineno = p->tokens[_mark]->lineno;
8006 UNUSED(_start_lineno); // Only used by EXTRA macro
8007 int _start_col_offset = p->tokens[_mark]->col_offset;
8008 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008009 { // '+' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008010 if (p->error_indicator) {
8011 return NULL;
8012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008013 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008014 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008015 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008016 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008017 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008018 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008019 )
8020 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008021 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8022 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008023 return NULL;
8024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008025 int _end_lineno = _token->end_lineno;
8026 UNUSED(_end_lineno); // Only used by EXTRA macro
8027 int _end_col_offset = _token->end_col_offset;
8028 UNUSED(_end_col_offset); // Only used by EXTRA macro
8029 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
8030 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008031 p->error_indicator = 1;
8032 return NULL;
8033 }
8034 goto done;
8035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008036 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008037 }
8038 { // '-' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008039 if (p->error_indicator) {
8040 return NULL;
8041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008042 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008043 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008044 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008045 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008046 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008047 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008048 )
8049 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008050 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8051 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008052 return NULL;
8053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008054 int _end_lineno = _token->end_lineno;
8055 UNUSED(_end_lineno); // Only used by EXTRA macro
8056 int _end_col_offset = _token->end_col_offset;
8057 UNUSED(_end_col_offset); // Only used by EXTRA macro
8058 _res = _Py_UnaryOp ( USub , a , EXTRA );
8059 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008060 p->error_indicator = 1;
8061 return NULL;
8062 }
8063 goto done;
8064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008065 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008066 }
8067 { // '~' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008068 if (p->error_indicator) {
8069 return NULL;
8070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008071 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008072 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008073 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008074 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008076 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008077 )
8078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008079 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8080 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008081 return NULL;
8082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008083 int _end_lineno = _token->end_lineno;
8084 UNUSED(_end_lineno); // Only used by EXTRA macro
8085 int _end_col_offset = _token->end_col_offset;
8086 UNUSED(_end_col_offset); // Only used by EXTRA macro
8087 _res = _Py_UnaryOp ( Invert , a , EXTRA );
8088 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008089 p->error_indicator = 1;
8090 return NULL;
8091 }
8092 goto done;
8093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008094 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008095 }
8096 { // power
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008097 if (p->error_indicator) {
8098 return NULL;
8099 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008100 expr_ty power_var;
8101 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008102 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008103 )
8104 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008105 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008106 goto done;
8107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008108 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008110 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008111 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008112 _PyPegen_insert_memo(p, _mark, factor_type, _res);
8113 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008114}
8115
8116// power: await_primary '**' factor | await_primary
8117static expr_ty
8118power_rule(Parser *p)
8119{
8120 if (p->error_indicator) {
8121 return NULL;
8122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008123 expr_ty _res = NULL;
8124 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008125 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8126 p->error_indicator = 1;
8127 return NULL;
8128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008129 int _start_lineno = p->tokens[_mark]->lineno;
8130 UNUSED(_start_lineno); // Only used by EXTRA macro
8131 int _start_col_offset = p->tokens[_mark]->col_offset;
8132 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008133 { // await_primary '**' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008134 if (p->error_indicator) {
8135 return NULL;
8136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008137 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008138 expr_ty a;
8139 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008140 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008141 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008142 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008143 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008144 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008145 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008146 )
8147 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008148 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8149 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008150 return NULL;
8151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008152 int _end_lineno = _token->end_lineno;
8153 UNUSED(_end_lineno); // Only used by EXTRA macro
8154 int _end_col_offset = _token->end_col_offset;
8155 UNUSED(_end_col_offset); // Only used by EXTRA macro
8156 _res = _Py_BinOp ( a , Pow , b , EXTRA );
8157 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008158 p->error_indicator = 1;
8159 return NULL;
8160 }
8161 goto done;
8162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008163 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008164 }
8165 { // await_primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008166 if (p->error_indicator) {
8167 return NULL;
8168 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008169 expr_ty await_primary_var;
8170 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008171 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008172 )
8173 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008174 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008175 goto done;
8176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008177 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008179 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008180 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008181 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008182}
8183
8184// await_primary: AWAIT primary | primary
8185static expr_ty
8186await_primary_rule(Parser *p)
8187{
8188 if (p->error_indicator) {
8189 return NULL;
8190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008191 expr_ty _res = NULL;
8192 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
8193 return _res;
8194 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008195 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8196 p->error_indicator = 1;
8197 return NULL;
8198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008199 int _start_lineno = p->tokens[_mark]->lineno;
8200 UNUSED(_start_lineno); // Only used by EXTRA macro
8201 int _start_col_offset = p->tokens[_mark]->col_offset;
8202 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008203 { // AWAIT primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008204 if (p->error_indicator) {
8205 return NULL;
8206 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008207 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008208 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008209 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008210 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008211 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008212 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008213 )
8214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008215 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8216 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008217 return NULL;
8218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008219 int _end_lineno = _token->end_lineno;
8220 UNUSED(_end_lineno); // Only used by EXTRA macro
8221 int _end_col_offset = _token->end_col_offset;
8222 UNUSED(_end_col_offset); // Only used by EXTRA macro
8223 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
8224 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008225 p->error_indicator = 1;
8226 return NULL;
8227 }
8228 goto done;
8229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008230 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008231 }
8232 { // primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008233 if (p->error_indicator) {
8234 return NULL;
8235 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008236 expr_ty primary_var;
8237 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008238 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008239 )
8240 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008241 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008242 goto done;
8243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008244 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008246 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008247 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008248 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
8249 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008250}
8251
8252// Left-recursive
8253// primary:
8254// | primary '.' NAME
8255// | primary genexp
8256// | primary '(' arguments? ')'
8257// | primary '[' slices ']'
8258// | atom
8259static expr_ty primary_raw(Parser *);
8260static expr_ty
8261primary_rule(Parser *p)
8262{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008263 expr_ty _res = NULL;
8264 if (_PyPegen_is_memoized(p, primary_type, &_res))
8265 return _res;
8266 int _mark = p->mark;
8267 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008268 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008269 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008270 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008271 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008273 p->mark = _mark;
8274 void *_raw = primary_raw(p);
8275 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008276 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008277 _resmark = p->mark;
8278 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008280 p->mark = _resmark;
8281 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008282}
8283static expr_ty
8284primary_raw(Parser *p)
8285{
8286 if (p->error_indicator) {
8287 return NULL;
8288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008289 expr_ty _res = NULL;
8290 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008291 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8292 p->error_indicator = 1;
8293 return NULL;
8294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008295 int _start_lineno = p->tokens[_mark]->lineno;
8296 UNUSED(_start_lineno); // Only used by EXTRA macro
8297 int _start_col_offset = p->tokens[_mark]->col_offset;
8298 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008299 { // primary '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008300 if (p->error_indicator) {
8301 return NULL;
8302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008303 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008304 expr_ty a;
8305 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008306 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008307 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008308 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008309 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008310 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008311 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008312 )
8313 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008314 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8315 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008316 return NULL;
8317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008318 int _end_lineno = _token->end_lineno;
8319 UNUSED(_end_lineno); // Only used by EXTRA macro
8320 int _end_col_offset = _token->end_col_offset;
8321 UNUSED(_end_col_offset); // Only used by EXTRA macro
8322 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
8323 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008324 p->error_indicator = 1;
8325 return NULL;
8326 }
8327 goto done;
8328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008329 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008330 }
8331 { // primary genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008332 if (p->error_indicator) {
8333 return NULL;
8334 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008335 expr_ty a;
8336 expr_ty b;
8337 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008338 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008339 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008340 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008341 )
8342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008343 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8344 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008345 return NULL;
8346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008347 int _end_lineno = _token->end_lineno;
8348 UNUSED(_end_lineno); // Only used by EXTRA macro
8349 int _end_col_offset = _token->end_col_offset;
8350 UNUSED(_end_col_offset); // Only used by EXTRA macro
8351 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
8352 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008353 p->error_indicator = 1;
8354 return NULL;
8355 }
8356 goto done;
8357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008358 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008359 }
8360 { // primary '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008361 if (p->error_indicator) {
8362 return NULL;
8363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008364 Token * _literal;
8365 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008366 expr_ty a;
8367 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008368 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008369 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008370 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008371 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008373 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008374 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008375 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008376 )
8377 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008378 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8379 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008380 return NULL;
8381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008382 int _end_lineno = _token->end_lineno;
8383 UNUSED(_end_lineno); // Only used by EXTRA macro
8384 int _end_col_offset = _token->end_col_offset;
8385 UNUSED(_end_col_offset); // Only used by EXTRA macro
8386 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
8387 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008388 p->error_indicator = 1;
8389 return NULL;
8390 }
8391 goto done;
8392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008393 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008394 }
8395 { // primary '[' slices ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008396 if (p->error_indicator) {
8397 return NULL;
8398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008399 Token * _literal;
8400 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008401 expr_ty a;
8402 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008403 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008404 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008405 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008406 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008407 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008408 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008409 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008410 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008411 )
8412 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008413 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8414 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008415 return NULL;
8416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008417 int _end_lineno = _token->end_lineno;
8418 UNUSED(_end_lineno); // Only used by EXTRA macro
8419 int _end_col_offset = _token->end_col_offset;
8420 UNUSED(_end_col_offset); // Only used by EXTRA macro
8421 _res = _Py_Subscript ( a , b , Load , EXTRA );
8422 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008423 p->error_indicator = 1;
8424 return NULL;
8425 }
8426 goto done;
8427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008428 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008429 }
8430 { // atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008431 if (p->error_indicator) {
8432 return NULL;
8433 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008434 expr_ty atom_var;
8435 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008436 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008437 )
8438 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008439 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008440 goto done;
8441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008442 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008444 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008445 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008446 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008447}
8448
8449// slices: slice !',' | ','.slice+ ','?
8450static expr_ty
8451slices_rule(Parser *p)
8452{
8453 if (p->error_indicator) {
8454 return NULL;
8455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008456 expr_ty _res = NULL;
8457 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008458 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8459 p->error_indicator = 1;
8460 return NULL;
8461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008462 int _start_lineno = p->tokens[_mark]->lineno;
8463 UNUSED(_start_lineno); // Only used by EXTRA macro
8464 int _start_col_offset = p->tokens[_mark]->col_offset;
8465 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 { // slice !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008467 if (p->error_indicator) {
8468 return NULL;
8469 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008470 expr_ty a;
8471 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008472 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008473 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008474 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008475 )
8476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008477 _res = a;
8478 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008479 p->error_indicator = 1;
8480 return NULL;
8481 }
8482 goto done;
8483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008484 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008485 }
8486 { // ','.slice+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008487 if (p->error_indicator) {
8488 return NULL;
8489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008490 void *_opt_var;
8491 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008492 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008493 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008494 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008495 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008496 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008497 )
8498 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008499 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8500 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008501 return NULL;
8502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008503 int _end_lineno = _token->end_lineno;
8504 UNUSED(_end_lineno); // Only used by EXTRA macro
8505 int _end_col_offset = _token->end_col_offset;
8506 UNUSED(_end_col_offset); // Only used by EXTRA macro
8507 _res = _Py_Tuple ( a , Load , EXTRA );
8508 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008509 p->error_indicator = 1;
8510 return NULL;
8511 }
8512 goto done;
8513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008514 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008516 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008517 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008518 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008519}
8520
8521// slice: expression? ':' expression? [':' expression?] | expression
8522static expr_ty
8523slice_rule(Parser *p)
8524{
8525 if (p->error_indicator) {
8526 return NULL;
8527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008528 expr_ty _res = NULL;
8529 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008530 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8531 p->error_indicator = 1;
8532 return NULL;
8533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008534 int _start_lineno = p->tokens[_mark]->lineno;
8535 UNUSED(_start_lineno); // Only used by EXTRA macro
8536 int _start_col_offset = p->tokens[_mark]->col_offset;
8537 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008538 { // expression? ':' expression? [':' expression?]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008539 if (p->error_indicator) {
8540 return NULL;
8541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008542 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008543 void *a;
8544 void *b;
8545 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008546 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008547 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008548 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008549 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008550 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008551 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008552 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008553 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008554 )
8555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008556 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8557 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008558 return NULL;
8559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008560 int _end_lineno = _token->end_lineno;
8561 UNUSED(_end_lineno); // Only used by EXTRA macro
8562 int _end_col_offset = _token->end_col_offset;
8563 UNUSED(_end_col_offset); // Only used by EXTRA macro
8564 _res = _Py_Slice ( a , b , c , EXTRA );
8565 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008566 p->error_indicator = 1;
8567 return NULL;
8568 }
8569 goto done;
8570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008572 }
8573 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008574 if (p->error_indicator) {
8575 return NULL;
8576 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008577 expr_ty a;
8578 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008579 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008580 )
8581 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008582 _res = a;
8583 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008584 p->error_indicator = 1;
8585 return NULL;
8586 }
8587 goto done;
8588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008589 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008591 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008592 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008593 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008594}
8595
8596// atom:
8597// | NAME
8598// | 'True'
8599// | 'False'
8600// | 'None'
8601// | '__new_parser__'
8602// | &STRING strings
8603// | NUMBER
8604// | &'(' (tuple | group | genexp)
8605// | &'[' (list | listcomp)
8606// | &'{' (dict | set | dictcomp | setcomp)
8607// | '...'
8608static expr_ty
8609atom_rule(Parser *p)
8610{
8611 if (p->error_indicator) {
8612 return NULL;
8613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008614 expr_ty _res = NULL;
8615 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008616 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8617 p->error_indicator = 1;
8618 return NULL;
8619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008620 int _start_lineno = p->tokens[_mark]->lineno;
8621 UNUSED(_start_lineno); // Only used by EXTRA macro
8622 int _start_col_offset = p->tokens[_mark]->col_offset;
8623 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008624 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008625 if (p->error_indicator) {
8626 return NULL;
8627 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008628 expr_ty name_var;
8629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008630 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008631 )
8632 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008633 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008634 goto done;
8635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008636 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 }
8638 { // 'True'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008639 if (p->error_indicator) {
8640 return NULL;
8641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008642 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008643 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008644 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008645 )
8646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008647 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8648 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008649 return NULL;
8650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008651 int _end_lineno = _token->end_lineno;
8652 UNUSED(_end_lineno); // Only used by EXTRA macro
8653 int _end_col_offset = _token->end_col_offset;
8654 UNUSED(_end_col_offset); // Only used by EXTRA macro
8655 _res = _Py_Constant ( Py_True , NULL , EXTRA );
8656 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008657 p->error_indicator = 1;
8658 return NULL;
8659 }
8660 goto done;
8661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008663 }
8664 { // 'False'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008665 if (p->error_indicator) {
8666 return NULL;
8667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008668 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008669 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008670 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008671 )
8672 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008673 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8674 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008675 return NULL;
8676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008677 int _end_lineno = _token->end_lineno;
8678 UNUSED(_end_lineno); // Only used by EXTRA macro
8679 int _end_col_offset = _token->end_col_offset;
8680 UNUSED(_end_col_offset); // Only used by EXTRA macro
8681 _res = _Py_Constant ( Py_False , NULL , EXTRA );
8682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008683 p->error_indicator = 1;
8684 return NULL;
8685 }
8686 goto done;
8687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008689 }
8690 { // 'None'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008691 if (p->error_indicator) {
8692 return NULL;
8693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008694 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008695 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008696 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008697 )
8698 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008699 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8700 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008701 return NULL;
8702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008703 int _end_lineno = _token->end_lineno;
8704 UNUSED(_end_lineno); // Only used by EXTRA macro
8705 int _end_col_offset = _token->end_col_offset;
8706 UNUSED(_end_col_offset); // Only used by EXTRA macro
8707 _res = _Py_Constant ( Py_None , NULL , EXTRA );
8708 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008709 p->error_indicator = 1;
8710 return NULL;
8711 }
8712 goto done;
8713 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008714 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008715 }
8716 { // '__new_parser__'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008717 if (p->error_indicator) {
8718 return NULL;
8719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008720 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008721 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008722 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008723 )
8724 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008725 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
8726 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008727 p->error_indicator = 1;
8728 return NULL;
8729 }
8730 goto done;
8731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008732 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008733 }
8734 { // &STRING strings
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008735 if (p->error_indicator) {
8736 return NULL;
8737 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008738 expr_ty strings_var;
8739 if (
8740 _PyPegen_lookahead(1, _PyPegen_string_token, p)
8741 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008742 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008743 )
8744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008745 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008746 goto done;
8747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008748 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008749 }
8750 { // NUMBER
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008751 if (p->error_indicator) {
8752 return NULL;
8753 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008754 expr_ty number_var;
8755 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008756 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008757 )
8758 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008759 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008760 goto done;
8761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008762 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008763 }
8764 { // &'(' (tuple | group | genexp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008765 if (p->error_indicator) {
8766 return NULL;
8767 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008768 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008769 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008770 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008771 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008772 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008773 )
8774 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008775 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008776 goto done;
8777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008778 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008779 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008780 { // &'[' (list | listcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008781 if (p->error_indicator) {
8782 return NULL;
8783 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008784 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008785 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008786 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008787 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008788 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008789 )
8790 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008791 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008792 goto done;
8793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008794 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008795 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008796 { // &'{' (dict | set | dictcomp | setcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008797 if (p->error_indicator) {
8798 return NULL;
8799 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008800 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008801 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008802 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008804 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008805 )
8806 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008807 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008808 goto done;
8809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008810 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008811 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008812 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008813 if (p->error_indicator) {
8814 return NULL;
8815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008816 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008817 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008818 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008819 )
8820 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008821 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8822 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008823 return NULL;
8824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008825 int _end_lineno = _token->end_lineno;
8826 UNUSED(_end_lineno); // Only used by EXTRA macro
8827 int _end_col_offset = _token->end_col_offset;
8828 UNUSED(_end_col_offset); // Only used by EXTRA macro
8829 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8830 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008831 p->error_indicator = 1;
8832 return NULL;
8833 }
8834 goto done;
8835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008836 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008838 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008839 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008840 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008841}
8842
8843// strings: STRING+
8844static expr_ty
8845strings_rule(Parser *p)
8846{
8847 if (p->error_indicator) {
8848 return NULL;
8849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008850 expr_ty _res = NULL;
8851 if (_PyPegen_is_memoized(p, strings_type, &_res))
8852 return _res;
8853 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008854 { // STRING+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008855 if (p->error_indicator) {
8856 return NULL;
8857 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008858 asdl_seq * a;
8859 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008860 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 )
8862 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008863 _res = _PyPegen_concatenate_strings ( p , a );
8864 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008865 p->error_indicator = 1;
8866 return NULL;
8867 }
8868 goto done;
8869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008872 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008873 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008874 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8875 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008876}
8877
8878// list: '[' star_named_expressions? ']'
8879static expr_ty
8880list_rule(Parser *p)
8881{
8882 if (p->error_indicator) {
8883 return NULL;
8884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008885 expr_ty _res = NULL;
8886 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008887 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8888 p->error_indicator = 1;
8889 return NULL;
8890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008891 int _start_lineno = p->tokens[_mark]->lineno;
8892 UNUSED(_start_lineno); // Only used by EXTRA macro
8893 int _start_col_offset = p->tokens[_mark]->col_offset;
8894 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008895 { // '[' star_named_expressions? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008896 if (p->error_indicator) {
8897 return NULL;
8898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008899 Token * _literal;
8900 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008901 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008902 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008903 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008905 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008906 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008907 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008908 )
8909 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008910 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8911 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008912 return NULL;
8913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008914 int _end_lineno = _token->end_lineno;
8915 UNUSED(_end_lineno); // Only used by EXTRA macro
8916 int _end_col_offset = _token->end_col_offset;
8917 UNUSED(_end_col_offset); // Only used by EXTRA macro
8918 _res = _Py_List ( a , Load , EXTRA );
8919 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008920 p->error_indicator = 1;
8921 return NULL;
8922 }
8923 goto done;
8924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008925 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008927 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008928 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008929 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008930}
8931
8932// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8933static expr_ty
8934listcomp_rule(Parser *p)
8935{
8936 if (p->error_indicator) {
8937 return NULL;
8938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008939 expr_ty _res = NULL;
8940 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008941 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8942 p->error_indicator = 1;
8943 return NULL;
8944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008945 int _start_lineno = p->tokens[_mark]->lineno;
8946 UNUSED(_start_lineno); // Only used by EXTRA macro
8947 int _start_col_offset = p->tokens[_mark]->col_offset;
8948 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008949 { // '[' named_expression for_if_clauses ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008950 if (p->error_indicator) {
8951 return NULL;
8952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008953 Token * _literal;
8954 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008955 expr_ty a;
8956 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008957 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008958 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008959 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008960 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008961 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008962 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008963 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008964 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008965 )
8966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008967 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8968 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008969 return NULL;
8970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008971 int _end_lineno = _token->end_lineno;
8972 UNUSED(_end_lineno); // Only used by EXTRA macro
8973 int _end_col_offset = _token->end_col_offset;
8974 UNUSED(_end_col_offset); // Only used by EXTRA macro
8975 _res = _Py_ListComp ( a , b , EXTRA );
8976 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008977 p->error_indicator = 1;
8978 return NULL;
8979 }
8980 goto done;
8981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008982 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008983 }
8984 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008985 if (p->error_indicator) {
8986 return NULL;
8987 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008988 void *invalid_comprehension_var;
8989 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008990 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008991 )
8992 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008993 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008994 goto done;
8995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008996 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008998 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008999 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009000 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009001}
9002
9003// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
9004static expr_ty
9005tuple_rule(Parser *p)
9006{
9007 if (p->error_indicator) {
9008 return NULL;
9009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009010 expr_ty _res = NULL;
9011 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009012 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9013 p->error_indicator = 1;
9014 return NULL;
9015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009016 int _start_lineno = p->tokens[_mark]->lineno;
9017 UNUSED(_start_lineno); // Only used by EXTRA macro
9018 int _start_col_offset = p->tokens[_mark]->col_offset;
9019 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009020 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009021 if (p->error_indicator) {
9022 return NULL;
9023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009024 Token * _literal;
9025 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009026 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009027 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009028 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009029 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009030 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009031 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009032 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009033 )
9034 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009035 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9036 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009037 return NULL;
9038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009039 int _end_lineno = _token->end_lineno;
9040 UNUSED(_end_lineno); // Only used by EXTRA macro
9041 int _end_col_offset = _token->end_col_offset;
9042 UNUSED(_end_col_offset); // Only used by EXTRA macro
9043 _res = _Py_Tuple ( a , Load , EXTRA );
9044 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009045 p->error_indicator = 1;
9046 return NULL;
9047 }
9048 goto done;
9049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009050 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009052 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009053 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009054 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009055}
9056
9057// group: '(' (yield_expr | named_expression) ')'
9058static expr_ty
9059group_rule(Parser *p)
9060{
9061 if (p->error_indicator) {
9062 return NULL;
9063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009064 expr_ty _res = NULL;
9065 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009066 { // '(' (yield_expr | named_expression) ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009067 if (p->error_indicator) {
9068 return NULL;
9069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009070 Token * _literal;
9071 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009072 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009073 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009074 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009076 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009077 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009078 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009079 )
9080 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009081 _res = a;
9082 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009083 p->error_indicator = 1;
9084 return NULL;
9085 }
9086 goto done;
9087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009088 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009090 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009091 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009092 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009093}
9094
9095// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
9096static expr_ty
9097genexp_rule(Parser *p)
9098{
9099 if (p->error_indicator) {
9100 return NULL;
9101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009102 expr_ty _res = NULL;
9103 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009104 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9105 p->error_indicator = 1;
9106 return NULL;
9107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009108 int _start_lineno = p->tokens[_mark]->lineno;
9109 UNUSED(_start_lineno); // Only used by EXTRA macro
9110 int _start_col_offset = p->tokens[_mark]->col_offset;
9111 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009112 { // '(' expression for_if_clauses ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009113 if (p->error_indicator) {
9114 return NULL;
9115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009116 Token * _literal;
9117 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009118 expr_ty a;
9119 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009120 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009121 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009122 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009123 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009124 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009125 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009126 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009127 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009128 )
9129 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009130 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9131 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009132 return NULL;
9133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009134 int _end_lineno = _token->end_lineno;
9135 UNUSED(_end_lineno); // Only used by EXTRA macro
9136 int _end_col_offset = _token->end_col_offset;
9137 UNUSED(_end_col_offset); // Only used by EXTRA macro
9138 _res = _Py_GeneratorExp ( a , b , EXTRA );
9139 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009140 p->error_indicator = 1;
9141 return NULL;
9142 }
9143 goto done;
9144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009145 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009146 }
9147 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009148 if (p->error_indicator) {
9149 return NULL;
9150 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009151 void *invalid_comprehension_var;
9152 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009153 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009154 )
9155 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009156 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009157 goto done;
9158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009159 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009161 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009162 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009163 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009164}
9165
9166// set: '{' expressions_list '}'
9167static expr_ty
9168set_rule(Parser *p)
9169{
9170 if (p->error_indicator) {
9171 return NULL;
9172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009173 expr_ty _res = NULL;
9174 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009175 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9176 p->error_indicator = 1;
9177 return NULL;
9178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009179 int _start_lineno = p->tokens[_mark]->lineno;
9180 UNUSED(_start_lineno); // Only used by EXTRA macro
9181 int _start_col_offset = p->tokens[_mark]->col_offset;
9182 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009183 { // '{' expressions_list '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009184 if (p->error_indicator) {
9185 return NULL;
9186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009187 Token * _literal;
9188 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009189 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009190 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009191 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009193 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009194 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009195 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009196 )
9197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009198 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9199 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009200 return NULL;
9201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009202 int _end_lineno = _token->end_lineno;
9203 UNUSED(_end_lineno); // Only used by EXTRA macro
9204 int _end_col_offset = _token->end_col_offset;
9205 UNUSED(_end_col_offset); // Only used by EXTRA macro
9206 _res = _Py_Set ( a , EXTRA );
9207 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009208 p->error_indicator = 1;
9209 return NULL;
9210 }
9211 goto done;
9212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009213 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009215 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009216 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009217 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009218}
9219
9220// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
9221static expr_ty
9222setcomp_rule(Parser *p)
9223{
9224 if (p->error_indicator) {
9225 return NULL;
9226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009227 expr_ty _res = NULL;
9228 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009229 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9230 p->error_indicator = 1;
9231 return NULL;
9232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009233 int _start_lineno = p->tokens[_mark]->lineno;
9234 UNUSED(_start_lineno); // Only used by EXTRA macro
9235 int _start_col_offset = p->tokens[_mark]->col_offset;
9236 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009237 { // '{' expression for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009238 if (p->error_indicator) {
9239 return NULL;
9240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009241 Token * _literal;
9242 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009243 expr_ty a;
9244 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009245 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009246 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009247 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009248 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009249 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009250 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009251 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009252 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009253 )
9254 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009255 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9256 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009257 return NULL;
9258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009259 int _end_lineno = _token->end_lineno;
9260 UNUSED(_end_lineno); // Only used by EXTRA macro
9261 int _end_col_offset = _token->end_col_offset;
9262 UNUSED(_end_col_offset); // Only used by EXTRA macro
9263 _res = _Py_SetComp ( a , b , EXTRA );
9264 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009265 p->error_indicator = 1;
9266 return NULL;
9267 }
9268 goto done;
9269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009270 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009271 }
9272 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009273 if (p->error_indicator) {
9274 return NULL;
9275 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009276 void *invalid_comprehension_var;
9277 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009278 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009279 )
9280 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009281 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009282 goto done;
9283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009284 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009286 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009287 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009288 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009289}
9290
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009291// dict: '{' double_starred_kvpairs? '}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009292static expr_ty
9293dict_rule(Parser *p)
9294{
9295 if (p->error_indicator) {
9296 return NULL;
9297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009298 expr_ty _res = NULL;
9299 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009300 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9301 p->error_indicator = 1;
9302 return NULL;
9303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009304 int _start_lineno = p->tokens[_mark]->lineno;
9305 UNUSED(_start_lineno); // Only used by EXTRA macro
9306 int _start_col_offset = p->tokens[_mark]->col_offset;
9307 UNUSED(_start_col_offset); // Only used by EXTRA macro
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009308 { // '{' double_starred_kvpairs? '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009309 if (p->error_indicator) {
9310 return NULL;
9311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009312 Token * _literal;
9313 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009314 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009315 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009316 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009317 &&
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009318 (a = double_starred_kvpairs_rule(p), 1) // double_starred_kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009319 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009320 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009321 )
9322 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009323 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9324 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009325 return NULL;
9326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009327 int _end_lineno = _token->end_lineno;
9328 UNUSED(_end_lineno); // Only used by EXTRA macro
9329 int _end_col_offset = _token->end_col_offset;
9330 UNUSED(_end_col_offset); // Only used by EXTRA macro
9331 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
9332 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009333 p->error_indicator = 1;
9334 return NULL;
9335 }
9336 goto done;
9337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009338 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009340 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009341 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009342 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009343}
9344
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009345// dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009346static expr_ty
9347dictcomp_rule(Parser *p)
9348{
9349 if (p->error_indicator) {
9350 return NULL;
9351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009352 expr_ty _res = NULL;
9353 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009354 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9355 p->error_indicator = 1;
9356 return NULL;
9357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009358 int _start_lineno = p->tokens[_mark]->lineno;
9359 UNUSED(_start_lineno); // Only used by EXTRA macro
9360 int _start_col_offset = p->tokens[_mark]->col_offset;
9361 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009362 { // '{' kvpair for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009363 if (p->error_indicator) {
9364 return NULL;
9365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009366 Token * _literal;
9367 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009368 KeyValuePair* a;
9369 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009370 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009371 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009373 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009374 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009375 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009376 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009377 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009378 )
9379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009380 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9381 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009382 return NULL;
9383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009384 int _end_lineno = _token->end_lineno;
9385 UNUSED(_end_lineno); // Only used by EXTRA macro
9386 int _end_col_offset = _token->end_col_offset;
9387 UNUSED(_end_col_offset); // Only used by EXTRA macro
9388 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
9389 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009390 p->error_indicator = 1;
9391 return NULL;
9392 }
9393 goto done;
9394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009395 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009396 }
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009397 { // invalid_dict_comprehension
9398 if (p->error_indicator) {
9399 return NULL;
9400 }
9401 void *invalid_dict_comprehension_var;
9402 if (
9403 (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p)) // invalid_dict_comprehension
9404 )
9405 {
9406 _res = invalid_dict_comprehension_var;
9407 goto done;
9408 }
9409 p->mark = _mark;
9410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009411 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009412 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009413 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009414}
9415
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009416// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009417static asdl_seq*
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009418double_starred_kvpairs_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009419{
9420 if (p->error_indicator) {
9421 return NULL;
9422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009423 asdl_seq* _res = NULL;
9424 int _mark = p->mark;
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009425 { // ','.double_starred_kvpair+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009426 if (p->error_indicator) {
9427 return NULL;
9428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009429 void *_opt_var;
9430 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009431 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009432 if (
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009433 (a = _gather_102_rule(p)) // ','.double_starred_kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009434 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009435 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009436 )
9437 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009438 _res = a;
9439 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009440 p->error_indicator = 1;
9441 return NULL;
9442 }
9443 goto done;
9444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009445 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009447 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009448 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009449 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009450}
9451
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009452// double_starred_kvpair: '**' bitwise_or | kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009453static KeyValuePair*
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009454double_starred_kvpair_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009455{
9456 if (p->error_indicator) {
9457 return NULL;
9458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009459 KeyValuePair* _res = NULL;
9460 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009461 { // '**' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009462 if (p->error_indicator) {
9463 return NULL;
9464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009465 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009466 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009467 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009468 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009470 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009471 )
9472 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009473 _res = _PyPegen_key_value_pair ( p , NULL , a );
9474 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009475 p->error_indicator = 1;
9476 return NULL;
9477 }
9478 goto done;
9479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009481 }
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -07009482 { // kvpair
9483 if (p->error_indicator) {
9484 return NULL;
9485 }
9486 KeyValuePair* kvpair_var;
9487 if (
9488 (kvpair_var = kvpair_rule(p)) // kvpair
9489 )
9490 {
9491 _res = kvpair_var;
9492 goto done;
9493 }
9494 p->mark = _mark;
9495 }
9496 _res = NULL;
9497 done:
9498 return _res;
9499}
9500
9501// kvpair: expression ':' expression
9502static KeyValuePair*
9503kvpair_rule(Parser *p)
9504{
9505 if (p->error_indicator) {
9506 return NULL;
9507 }
9508 KeyValuePair* _res = NULL;
9509 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009510 { // expression ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009511 if (p->error_indicator) {
9512 return NULL;
9513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009514 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009515 expr_ty a;
9516 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009517 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009518 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009519 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009520 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009521 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009522 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009523 )
9524 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009525 _res = _PyPegen_key_value_pair ( p , a , b );
9526 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009527 p->error_indicator = 1;
9528 return NULL;
9529 }
9530 goto done;
9531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009532 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009534 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009535 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009536 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009537}
9538
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009539// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009540static asdl_seq*
9541for_if_clauses_rule(Parser *p)
9542{
9543 if (p->error_indicator) {
9544 return NULL;
9545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009546 asdl_seq* _res = NULL;
9547 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009548 { // for_if_clause+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009549 if (p->error_indicator) {
9550 return NULL;
9551 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009552 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009553 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009554 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009555 )
9556 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009557 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009558 goto done;
9559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009560 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009562 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009563 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009564 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009565}
9566
9567// for_if_clause:
9568// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
9569// | 'for' star_targets 'in' disjunction (('if' disjunction))*
9570static comprehension_ty
9571for_if_clause_rule(Parser *p)
9572{
9573 if (p->error_indicator) {
9574 return NULL;
9575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009576 comprehension_ty _res = NULL;
9577 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009578 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009579 if (p->error_indicator) {
9580 return NULL;
9581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009582 Token * _keyword;
9583 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009584 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01009585 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009586 expr_ty b;
9587 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009588 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009589 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009590 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009591 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009592 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009593 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009594 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009595 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009596 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009597 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009598 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009599 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009600 )
9601 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009602 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
9603 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009604 p->error_indicator = 1;
9605 return NULL;
9606 }
9607 goto done;
9608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009609 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009610 }
9611 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009612 if (p->error_indicator) {
9613 return NULL;
9614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009615 Token * _keyword;
9616 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009617 expr_ty a;
9618 expr_ty b;
9619 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009620 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009621 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009623 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009624 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009625 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009626 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009627 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009628 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009629 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009630 )
9631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009632 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
9633 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009634 p->error_indicator = 1;
9635 return NULL;
9636 }
9637 goto done;
9638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009639 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009641 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009642 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009643 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009644}
9645
9646// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
9647static expr_ty
9648yield_expr_rule(Parser *p)
9649{
9650 if (p->error_indicator) {
9651 return NULL;
9652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009653 expr_ty _res = NULL;
9654 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009655 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9656 p->error_indicator = 1;
9657 return NULL;
9658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009659 int _start_lineno = p->tokens[_mark]->lineno;
9660 UNUSED(_start_lineno); // Only used by EXTRA macro
9661 int _start_col_offset = p->tokens[_mark]->col_offset;
9662 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009663 { // 'yield' 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009664 if (p->error_indicator) {
9665 return NULL;
9666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009667 Token * _keyword;
9668 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009669 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009670 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009671 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009672 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009673 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009675 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009676 )
9677 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009678 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9679 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009680 return NULL;
9681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009682 int _end_lineno = _token->end_lineno;
9683 UNUSED(_end_lineno); // Only used by EXTRA macro
9684 int _end_col_offset = _token->end_col_offset;
9685 UNUSED(_end_col_offset); // Only used by EXTRA macro
9686 _res = _Py_YieldFrom ( a , EXTRA );
9687 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009688 p->error_indicator = 1;
9689 return NULL;
9690 }
9691 goto done;
9692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009693 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009694 }
9695 { // 'yield' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009696 if (p->error_indicator) {
9697 return NULL;
9698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009699 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009700 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009701 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009702 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009703 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009704 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009705 )
9706 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009707 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9708 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009709 return NULL;
9710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009711 int _end_lineno = _token->end_lineno;
9712 UNUSED(_end_lineno); // Only used by EXTRA macro
9713 int _end_col_offset = _token->end_col_offset;
9714 UNUSED(_end_col_offset); // Only used by EXTRA macro
9715 _res = _Py_Yield ( a , EXTRA );
9716 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009717 p->error_indicator = 1;
9718 return NULL;
9719 }
9720 goto done;
9721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009722 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009724 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009725 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009726 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009727}
9728
9729// arguments: args ','? &')' | incorrect_arguments
9730static expr_ty
9731arguments_rule(Parser *p)
9732{
9733 if (p->error_indicator) {
9734 return NULL;
9735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009736 expr_ty _res = NULL;
9737 if (_PyPegen_is_memoized(p, arguments_type, &_res))
9738 return _res;
9739 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009740 { // args ','? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009741 if (p->error_indicator) {
9742 return NULL;
9743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009744 void *_opt_var;
9745 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009746 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009747 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009748 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009749 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009750 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009751 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009752 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009753 )
9754 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009755 _res = a;
9756 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009757 p->error_indicator = 1;
9758 return NULL;
9759 }
9760 goto done;
9761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009762 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009763 }
9764 { // incorrect_arguments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009765 if (p->error_indicator) {
9766 return NULL;
9767 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009768 void *incorrect_arguments_var;
9769 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009770 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009771 )
9772 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009773 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009774 goto done;
9775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009776 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009778 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009779 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009780 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
9781 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009782}
9783
9784// args: starred_expression [',' args] | kwargs | named_expression [',' args]
9785static expr_ty
9786args_rule(Parser *p)
9787{
9788 if (p->error_indicator) {
9789 return NULL;
9790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009791 expr_ty _res = NULL;
9792 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009793 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9794 p->error_indicator = 1;
9795 return NULL;
9796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009797 int _start_lineno = p->tokens[_mark]->lineno;
9798 UNUSED(_start_lineno); // Only used by EXTRA macro
9799 int _start_col_offset = p->tokens[_mark]->col_offset;
9800 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009801 { // starred_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009802 if (p->error_indicator) {
9803 return NULL;
9804 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009805 expr_ty a;
9806 void *b;
9807 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009808 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009809 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009810 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009811 )
9812 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009813 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9814 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009815 return NULL;
9816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009817 int _end_lineno = _token->end_lineno;
9818 UNUSED(_end_lineno); // Only used by EXTRA macro
9819 int _end_col_offset = _token->end_col_offset;
9820 UNUSED(_end_col_offset); // Only used by EXTRA macro
9821 _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 );
9822 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009823 p->error_indicator = 1;
9824 return NULL;
9825 }
9826 goto done;
9827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009828 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009829 }
9830 { // kwargs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009831 if (p->error_indicator) {
9832 return NULL;
9833 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009834 asdl_seq* a;
9835 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009836 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009837 )
9838 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009839 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9840 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009841 return NULL;
9842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009843 int _end_lineno = _token->end_lineno;
9844 UNUSED(_end_lineno); // Only used by EXTRA macro
9845 int _end_col_offset = _token->end_col_offset;
9846 UNUSED(_end_col_offset); // Only used by EXTRA macro
9847 _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 );
9848 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009849 p->error_indicator = 1;
9850 return NULL;
9851 }
9852 goto done;
9853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009854 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009855 }
9856 { // named_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009857 if (p->error_indicator) {
9858 return NULL;
9859 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009860 expr_ty a;
9861 void *b;
9862 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009863 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009864 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009865 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009866 )
9867 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009868 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9869 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009870 return NULL;
9871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009872 int _end_lineno = _token->end_lineno;
9873 UNUSED(_end_lineno); // Only used by EXTRA macro
9874 int _end_col_offset = _token->end_col_offset;
9875 UNUSED(_end_col_offset); // Only used by EXTRA macro
9876 _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 );
9877 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009878 p->error_indicator = 1;
9879 return NULL;
9880 }
9881 goto done;
9882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009883 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009885 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009886 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009887 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009888}
9889
9890// kwargs:
9891// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
9892// | ','.kwarg_or_starred+
9893// | ','.kwarg_or_double_starred+
9894static asdl_seq*
9895kwargs_rule(Parser *p)
9896{
9897 if (p->error_indicator) {
9898 return NULL;
9899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009900 asdl_seq* _res = NULL;
9901 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009902 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009903 if (p->error_indicator) {
9904 return NULL;
9905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009906 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009907 asdl_seq * a;
9908 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009909 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009910 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009911 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009912 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009913 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009914 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009915 )
9916 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009917 _res = _PyPegen_join_sequences ( p , a , b );
9918 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009919 p->error_indicator = 1;
9920 return NULL;
9921 }
9922 goto done;
9923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009924 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009925 }
9926 { // ','.kwarg_or_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009927 if (p->error_indicator) {
9928 return NULL;
9929 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009930 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009931 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009932 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009933 )
9934 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009935 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009936 goto done;
9937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009938 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009939 }
9940 { // ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009941 if (p->error_indicator) {
9942 return NULL;
9943 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009944 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009945 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009946 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009947 )
9948 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009949 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009950 goto done;
9951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009952 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009954 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009955 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009956 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009957}
9958
9959// starred_expression: '*' expression
9960static expr_ty
9961starred_expression_rule(Parser *p)
9962{
9963 if (p->error_indicator) {
9964 return NULL;
9965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009966 expr_ty _res = NULL;
9967 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009968 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9969 p->error_indicator = 1;
9970 return NULL;
9971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009972 int _start_lineno = p->tokens[_mark]->lineno;
9973 UNUSED(_start_lineno); // Only used by EXTRA macro
9974 int _start_col_offset = p->tokens[_mark]->col_offset;
9975 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009976 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009977 if (p->error_indicator) {
9978 return NULL;
9979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009980 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009981 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009982 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009983 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009984 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009985 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009986 )
9987 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009988 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9989 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009990 return NULL;
9991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009992 int _end_lineno = _token->end_lineno;
9993 UNUSED(_end_lineno); // Only used by EXTRA macro
9994 int _end_col_offset = _token->end_col_offset;
9995 UNUSED(_end_col_offset); // Only used by EXTRA macro
9996 _res = _Py_Starred ( a , Load , EXTRA );
9997 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009998 p->error_indicator = 1;
9999 return NULL;
10000 }
10001 goto done;
10002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010003 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010005 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010006 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010007 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010008}
10009
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010010// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010011static KeywordOrStarred*
10012kwarg_or_starred_rule(Parser *p)
10013{
10014 if (p->error_indicator) {
10015 return NULL;
10016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010017 KeywordOrStarred* _res = NULL;
10018 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010019 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10020 p->error_indicator = 1;
10021 return NULL;
10022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010023 int _start_lineno = p->tokens[_mark]->lineno;
10024 UNUSED(_start_lineno); // Only used by EXTRA macro
10025 int _start_col_offset = p->tokens[_mark]->col_offset;
10026 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010027 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010028 if (p->error_indicator) {
10029 return NULL;
10030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010031 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010032 expr_ty a;
10033 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010034 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010035 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010036 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010037 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010038 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010039 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010040 )
10041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010042 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10043 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010044 return NULL;
10045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010046 int _end_lineno = _token->end_lineno;
10047 UNUSED(_end_lineno); // Only used by EXTRA macro
10048 int _end_col_offset = _token->end_col_offset;
10049 UNUSED(_end_col_offset); // Only used by EXTRA macro
10050 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
10051 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010052 p->error_indicator = 1;
10053 return NULL;
10054 }
10055 goto done;
10056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010057 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010058 }
10059 { // starred_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010060 if (p->error_indicator) {
10061 return NULL;
10062 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010063 expr_ty a;
10064 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010065 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010066 )
10067 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010068 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
10069 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010070 p->error_indicator = 1;
10071 return NULL;
10072 }
10073 goto done;
10074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010075 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010076 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010077 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010078 if (p->error_indicator) {
10079 return NULL;
10080 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010081 void *invalid_kwarg_var;
10082 if (
10083 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
10084 )
10085 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010086 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010087 goto done;
10088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010089 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010091 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010092 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010093 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010094}
10095
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010096// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010097static KeywordOrStarred*
10098kwarg_or_double_starred_rule(Parser *p)
10099{
10100 if (p->error_indicator) {
10101 return NULL;
10102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010103 KeywordOrStarred* _res = NULL;
10104 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010105 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10106 p->error_indicator = 1;
10107 return NULL;
10108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010109 int _start_lineno = p->tokens[_mark]->lineno;
10110 UNUSED(_start_lineno); // Only used by EXTRA macro
10111 int _start_col_offset = p->tokens[_mark]->col_offset;
10112 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010113 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010114 if (p->error_indicator) {
10115 return NULL;
10116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010117 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010118 expr_ty a;
10119 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010120 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010121 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010122 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010123 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010124 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010125 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010126 )
10127 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010128 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10129 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010130 return NULL;
10131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010132 int _end_lineno = _token->end_lineno;
10133 UNUSED(_end_lineno); // Only used by EXTRA macro
10134 int _end_col_offset = _token->end_col_offset;
10135 UNUSED(_end_col_offset); // Only used by EXTRA macro
10136 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
10137 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010138 p->error_indicator = 1;
10139 return NULL;
10140 }
10141 goto done;
10142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010143 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010144 }
10145 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010146 if (p->error_indicator) {
10147 return NULL;
10148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010149 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010150 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010151 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010152 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010153 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010154 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010155 )
10156 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010157 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10158 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010159 return NULL;
10160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010161 int _end_lineno = _token->end_lineno;
10162 UNUSED(_end_lineno); // Only used by EXTRA macro
10163 int _end_col_offset = _token->end_col_offset;
10164 UNUSED(_end_col_offset); // Only used by EXTRA macro
10165 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
10166 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010167 p->error_indicator = 1;
10168 return NULL;
10169 }
10170 goto done;
10171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010172 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010173 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010174 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010175 if (p->error_indicator) {
10176 return NULL;
10177 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010178 void *invalid_kwarg_var;
10179 if (
10180 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
10181 )
10182 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010183 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010184 goto done;
10185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010186 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010188 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010189 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010190 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010191}
10192
10193// star_targets: star_target !',' | star_target ((',' star_target))* ','?
10194static expr_ty
10195star_targets_rule(Parser *p)
10196{
10197 if (p->error_indicator) {
10198 return NULL;
10199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010200 expr_ty _res = NULL;
10201 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010202 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10203 p->error_indicator = 1;
10204 return NULL;
10205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010206 int _start_lineno = p->tokens[_mark]->lineno;
10207 UNUSED(_start_lineno); // Only used by EXTRA macro
10208 int _start_col_offset = p->tokens[_mark]->col_offset;
10209 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010210 { // star_target !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010211 if (p->error_indicator) {
10212 return NULL;
10213 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010214 expr_ty a;
10215 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010216 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010217 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010218 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010219 )
10220 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010221 _res = a;
10222 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010223 p->error_indicator = 1;
10224 return NULL;
10225 }
10226 goto done;
10227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010228 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010229 }
10230 { // star_target ((',' star_target))* ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010231 if (p->error_indicator) {
10232 return NULL;
10233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010234 void *_opt_var;
10235 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010236 expr_ty a;
10237 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010238 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010239 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010240 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010241 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010242 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010243 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010244 )
10245 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010246 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10247 if (_token == NULL) {
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_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
10255 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010256 p->error_indicator = 1;
10257 return NULL;
10258 }
10259 goto done;
10260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010261 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010263 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010264 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010265 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010266}
10267
10268// star_targets_seq: ','.star_target+ ','?
10269static asdl_seq*
10270star_targets_seq_rule(Parser *p)
10271{
10272 if (p->error_indicator) {
10273 return NULL;
10274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010275 asdl_seq* _res = NULL;
10276 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010277 { // ','.star_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010278 if (p->error_indicator) {
10279 return NULL;
10280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010281 void *_opt_var;
10282 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010283 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010284 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010285 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010286 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010287 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010288 )
10289 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010290 _res = a;
10291 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010292 p->error_indicator = 1;
10293 return NULL;
10294 }
10295 goto done;
10296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010297 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010299 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010300 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010301 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010302}
10303
10304// star_target:
10305// | '*' (!'*' star_target)
10306// | t_primary '.' NAME !t_lookahead
10307// | t_primary '[' slices ']' !t_lookahead
10308// | star_atom
10309static expr_ty
10310star_target_rule(Parser *p)
10311{
10312 if (p->error_indicator) {
10313 return NULL;
10314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010315 expr_ty _res = NULL;
10316 if (_PyPegen_is_memoized(p, star_target_type, &_res))
10317 return _res;
10318 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010319 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10320 p->error_indicator = 1;
10321 return NULL;
10322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010323 int _start_lineno = p->tokens[_mark]->lineno;
10324 UNUSED(_start_lineno); // Only used by EXTRA macro
10325 int _start_col_offset = p->tokens[_mark]->col_offset;
10326 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010327 { // '*' (!'*' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010328 if (p->error_indicator) {
10329 return NULL;
10330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010331 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010332 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010333 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010334 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010335 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010336 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010337 )
10338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010339 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10340 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010341 return NULL;
10342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010343 int _end_lineno = _token->end_lineno;
10344 UNUSED(_end_lineno); // Only used by EXTRA macro
10345 int _end_col_offset = _token->end_col_offset;
10346 UNUSED(_end_col_offset); // Only used by EXTRA macro
10347 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
10348 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010349 p->error_indicator = 1;
10350 return NULL;
10351 }
10352 goto done;
10353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010354 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010355 }
10356 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010357 if (p->error_indicator) {
10358 return NULL;
10359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010360 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010361 expr_ty a;
10362 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010363 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010364 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010365 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010366 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010367 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010368 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010369 &&
10370 _PyPegen_lookahead(0, t_lookahead_rule, p)
10371 )
10372 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010373 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10374 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010375 return NULL;
10376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010377 int _end_lineno = _token->end_lineno;
10378 UNUSED(_end_lineno); // Only used by EXTRA macro
10379 int _end_col_offset = _token->end_col_offset;
10380 UNUSED(_end_col_offset); // Only used by EXTRA macro
10381 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10382 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010383 p->error_indicator = 1;
10384 return NULL;
10385 }
10386 goto done;
10387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010388 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010389 }
10390 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010391 if (p->error_indicator) {
10392 return NULL;
10393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010394 Token * _literal;
10395 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010396 expr_ty a;
10397 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010398 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010399 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010400 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010401 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010402 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010403 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010404 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010405 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010406 &&
10407 _PyPegen_lookahead(0, t_lookahead_rule, p)
10408 )
10409 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010410 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10411 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010412 return NULL;
10413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010414 int _end_lineno = _token->end_lineno;
10415 UNUSED(_end_lineno); // Only used by EXTRA macro
10416 int _end_col_offset = _token->end_col_offset;
10417 UNUSED(_end_col_offset); // Only used by EXTRA macro
10418 _res = _Py_Subscript ( a , b , Store , EXTRA );
10419 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010420 p->error_indicator = 1;
10421 return NULL;
10422 }
10423 goto done;
10424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010425 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010426 }
10427 { // star_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010428 if (p->error_indicator) {
10429 return NULL;
10430 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010431 expr_ty star_atom_var;
10432 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010433 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010434 )
10435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010436 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010437 goto done;
10438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010439 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010441 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010442 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010443 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
10444 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010445}
10446
10447// star_atom:
10448// | NAME
10449// | '(' star_target ')'
10450// | '(' star_targets_seq? ')'
10451// | '[' star_targets_seq? ']'
10452static expr_ty
10453star_atom_rule(Parser *p)
10454{
10455 if (p->error_indicator) {
10456 return NULL;
10457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010458 expr_ty _res = NULL;
10459 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010460 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10461 p->error_indicator = 1;
10462 return NULL;
10463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010464 int _start_lineno = p->tokens[_mark]->lineno;
10465 UNUSED(_start_lineno); // Only used by EXTRA macro
10466 int _start_col_offset = p->tokens[_mark]->col_offset;
10467 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010468 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010469 if (p->error_indicator) {
10470 return NULL;
10471 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010472 expr_ty a;
10473 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010474 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010475 )
10476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010477 _res = _PyPegen_set_expr_context ( p , a , Store );
10478 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010479 p->error_indicator = 1;
10480 return NULL;
10481 }
10482 goto done;
10483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010484 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010485 }
10486 { // '(' star_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010487 if (p->error_indicator) {
10488 return NULL;
10489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010490 Token * _literal;
10491 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010492 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010493 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010494 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010495 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010496 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010497 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010498 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010499 )
10500 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010501 _res = _PyPegen_set_expr_context ( p , a , Store );
10502 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010503 p->error_indicator = 1;
10504 return NULL;
10505 }
10506 goto done;
10507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010508 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010509 }
10510 { // '(' star_targets_seq? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010511 if (p->error_indicator) {
10512 return NULL;
10513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010514 Token * _literal;
10515 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010516 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010517 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010518 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010519 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010520 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010521 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010522 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010523 )
10524 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010525 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10526 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010527 return NULL;
10528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010529 int _end_lineno = _token->end_lineno;
10530 UNUSED(_end_lineno); // Only used by EXTRA macro
10531 int _end_col_offset = _token->end_col_offset;
10532 UNUSED(_end_col_offset); // Only used by EXTRA macro
10533 _res = _Py_Tuple ( a , Store , EXTRA );
10534 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010535 p->error_indicator = 1;
10536 return NULL;
10537 }
10538 goto done;
10539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010540 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010541 }
10542 { // '[' star_targets_seq? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010543 if (p->error_indicator) {
10544 return NULL;
10545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010546 Token * _literal;
10547 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010548 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010549 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010550 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010552 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010553 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010554 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010555 )
10556 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010557 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10558 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010559 return NULL;
10560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010561 int _end_lineno = _token->end_lineno;
10562 UNUSED(_end_lineno); // Only used by EXTRA macro
10563 int _end_col_offset = _token->end_col_offset;
10564 UNUSED(_end_col_offset); // Only used by EXTRA macro
10565 _res = _Py_List ( a , Store , EXTRA );
10566 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010567 p->error_indicator = 1;
10568 return NULL;
10569 }
10570 goto done;
10571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010572 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010574 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010575 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010576 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010577}
10578
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010579// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010580static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010581single_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010582{
10583 if (p->error_indicator) {
10584 return NULL;
10585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010586 expr_ty _res = NULL;
10587 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010588 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010589 if (p->error_indicator) {
10590 return NULL;
10591 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010592 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010593 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010594 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010595 )
10596 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010597 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010598 goto done;
10599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010600 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010601 }
10602 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010603 if (p->error_indicator) {
10604 return NULL;
10605 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010606 expr_ty a;
10607 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010608 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010609 )
10610 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010611 _res = _PyPegen_set_expr_context ( p , a , Store );
10612 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010613 p->error_indicator = 1;
10614 return NULL;
10615 }
10616 goto done;
10617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010618 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010619 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010620 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010621 if (p->error_indicator) {
10622 return NULL;
10623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010624 Token * _literal;
10625 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010626 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010627 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010628 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010629 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010630 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010631 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010632 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010633 )
10634 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010635 _res = a;
10636 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010637 p->error_indicator = 1;
10638 return NULL;
10639 }
10640 goto done;
10641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010642 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010644 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010645 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010646 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010647}
10648
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010649// single_subscript_attribute_target:
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010650// | t_primary '.' NAME !t_lookahead
10651// | t_primary '[' slices ']' !t_lookahead
10652static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010653single_subscript_attribute_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010654{
10655 if (p->error_indicator) {
10656 return NULL;
10657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010658 expr_ty _res = NULL;
10659 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010660 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10661 p->error_indicator = 1;
10662 return NULL;
10663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010664 int _start_lineno = p->tokens[_mark]->lineno;
10665 UNUSED(_start_lineno); // Only used by EXTRA macro
10666 int _start_col_offset = p->tokens[_mark]->col_offset;
10667 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010668 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010669 if (p->error_indicator) {
10670 return NULL;
10671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010672 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010673 expr_ty a;
10674 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010675 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010676 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010677 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010678 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010680 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010681 &&
10682 _PyPegen_lookahead(0, t_lookahead_rule, p)
10683 )
10684 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010685 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10686 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010687 return NULL;
10688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010689 int _end_lineno = _token->end_lineno;
10690 UNUSED(_end_lineno); // Only used by EXTRA macro
10691 int _end_col_offset = _token->end_col_offset;
10692 UNUSED(_end_col_offset); // Only used by EXTRA macro
10693 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10694 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010695 p->error_indicator = 1;
10696 return NULL;
10697 }
10698 goto done;
10699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010700 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010701 }
10702 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010703 if (p->error_indicator) {
10704 return NULL;
10705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010706 Token * _literal;
10707 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010708 expr_ty a;
10709 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010710 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010711 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010712 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010713 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010715 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010716 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010717 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010718 &&
10719 _PyPegen_lookahead(0, t_lookahead_rule, p)
10720 )
10721 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010722 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10723 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010724 return NULL;
10725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010726 int _end_lineno = _token->end_lineno;
10727 UNUSED(_end_lineno); // Only used by EXTRA macro
10728 int _end_col_offset = _token->end_col_offset;
10729 UNUSED(_end_col_offset); // Only used by EXTRA macro
10730 _res = _Py_Subscript ( a , b , Store , EXTRA );
10731 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010732 p->error_indicator = 1;
10733 return NULL;
10734 }
10735 goto done;
10736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010737 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010739 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010740 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010741 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010742}
10743
10744// del_targets: ','.del_target+ ','?
10745static asdl_seq*
10746del_targets_rule(Parser *p)
10747{
10748 if (p->error_indicator) {
10749 return NULL;
10750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010751 asdl_seq* _res = NULL;
10752 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010753 { // ','.del_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010754 if (p->error_indicator) {
10755 return NULL;
10756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010757 void *_opt_var;
10758 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010759 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010760 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010761 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010762 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010763 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010764 )
10765 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010766 _res = a;
10767 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010768 p->error_indicator = 1;
10769 return NULL;
10770 }
10771 goto done;
10772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010773 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010775 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010776 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010777 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010778}
10779
10780// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -070010781// | t_primary '.' NAME &del_target_end
10782// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010783// | del_t_atom
10784static expr_ty
10785del_target_rule(Parser *p)
10786{
10787 if (p->error_indicator) {
10788 return NULL;
10789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010790 expr_ty _res = NULL;
10791 if (_PyPegen_is_memoized(p, del_target_type, &_res))
10792 return _res;
10793 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010794 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10795 p->error_indicator = 1;
10796 return NULL;
10797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010798 int _start_lineno = p->tokens[_mark]->lineno;
10799 UNUSED(_start_lineno); // Only used by EXTRA macro
10800 int _start_col_offset = p->tokens[_mark]->col_offset;
10801 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070010802 { // t_primary '.' NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010803 if (p->error_indicator) {
10804 return NULL;
10805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010806 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010807 expr_ty a;
10808 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010809 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010810 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010811 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010812 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010813 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010814 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010815 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070010816 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010817 )
10818 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010819 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10820 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010821 return NULL;
10822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010823 int _end_lineno = _token->end_lineno;
10824 UNUSED(_end_lineno); // Only used by EXTRA macro
10825 int _end_col_offset = _token->end_col_offset;
10826 UNUSED(_end_col_offset); // Only used by EXTRA macro
10827 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
10828 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010829 p->error_indicator = 1;
10830 return NULL;
10831 }
10832 goto done;
10833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010834 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010835 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010836 { // t_primary '[' slices ']' &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010837 if (p->error_indicator) {
10838 return NULL;
10839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010840 Token * _literal;
10841 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010842 expr_ty a;
10843 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010844 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010845 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010846 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010847 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010848 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010849 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010850 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010851 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010852 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070010853 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010854 )
10855 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010856 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10857 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010858 return NULL;
10859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010860 int _end_lineno = _token->end_lineno;
10861 UNUSED(_end_lineno); // Only used by EXTRA macro
10862 int _end_col_offset = _token->end_col_offset;
10863 UNUSED(_end_col_offset); // Only used by EXTRA macro
10864 _res = _Py_Subscript ( a , b , Del , EXTRA );
10865 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010866 p->error_indicator = 1;
10867 return NULL;
10868 }
10869 goto done;
10870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010871 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010872 }
10873 { // del_t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010874 if (p->error_indicator) {
10875 return NULL;
10876 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010877 expr_ty del_t_atom_var;
10878 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010879 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010880 )
10881 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010882 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010883 goto done;
10884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010885 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010887 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010888 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010889 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
10890 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010891}
10892
Shantanu27c0d9b2020-05-11 14:53:58 -070010893// del_t_atom:
10894// | NAME &del_target_end
10895// | '(' del_target ')'
10896// | '(' del_targets? ')'
10897// | '[' del_targets? ']'
10898// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010899static expr_ty
10900del_t_atom_rule(Parser *p)
10901{
10902 if (p->error_indicator) {
10903 return NULL;
10904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010905 expr_ty _res = NULL;
10906 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010907 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10908 p->error_indicator = 1;
10909 return NULL;
10910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010911 int _start_lineno = p->tokens[_mark]->lineno;
10912 UNUSED(_start_lineno); // Only used by EXTRA macro
10913 int _start_col_offset = p->tokens[_mark]->col_offset;
10914 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070010915 { // NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010916 if (p->error_indicator) {
10917 return NULL;
10918 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010919 expr_ty a;
10920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010921 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -070010922 &&
10923 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010924 )
10925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010926 _res = _PyPegen_set_expr_context ( p , a , Del );
10927 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010928 p->error_indicator = 1;
10929 return NULL;
10930 }
10931 goto done;
10932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010934 }
10935 { // '(' del_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010936 if (p->error_indicator) {
10937 return NULL;
10938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010939 Token * _literal;
10940 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010941 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010942 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010943 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010944 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010945 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010946 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010947 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010948 )
10949 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010950 _res = _PyPegen_set_expr_context ( p , a , Del );
10951 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010952 p->error_indicator = 1;
10953 return NULL;
10954 }
10955 goto done;
10956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010958 }
10959 { // '(' del_targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010960 if (p->error_indicator) {
10961 return NULL;
10962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010963 Token * _literal;
10964 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010965 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010966 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010967 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010969 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010970 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010971 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010972 )
10973 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010974 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10975 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010976 return NULL;
10977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010978 int _end_lineno = _token->end_lineno;
10979 UNUSED(_end_lineno); // Only used by EXTRA macro
10980 int _end_col_offset = _token->end_col_offset;
10981 UNUSED(_end_col_offset); // Only used by EXTRA macro
10982 _res = _Py_Tuple ( a , Del , EXTRA );
10983 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010984 p->error_indicator = 1;
10985 return NULL;
10986 }
10987 goto done;
10988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010989 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010990 }
10991 { // '[' del_targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010992 if (p->error_indicator) {
10993 return NULL;
10994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010995 Token * _literal;
10996 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010997 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010998 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010999 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011000 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011001 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011002 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011003 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011004 )
11005 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011006 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11007 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011008 return NULL;
11009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011010 int _end_lineno = _token->end_lineno;
11011 UNUSED(_end_lineno); // Only used by EXTRA macro
11012 int _end_col_offset = _token->end_col_offset;
11013 UNUSED(_end_col_offset); // Only used by EXTRA macro
11014 _res = _Py_List ( a , Del , EXTRA );
11015 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011016 p->error_indicator = 1;
11017 return NULL;
11018 }
11019 goto done;
11020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011021 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011022 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011023 { // invalid_del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011024 if (p->error_indicator) {
11025 return NULL;
11026 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011027 void *invalid_del_target_var;
11028 if (
11029 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
11030 )
11031 {
11032 _res = invalid_del_target_var;
11033 goto done;
11034 }
11035 p->mark = _mark;
11036 }
11037 _res = NULL;
11038 done:
11039 return _res;
11040}
11041
11042// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
11043static void *
11044del_target_end_rule(Parser *p)
11045{
11046 if (p->error_indicator) {
11047 return NULL;
11048 }
11049 void * _res = NULL;
11050 int _mark = p->mark;
11051 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011052 if (p->error_indicator) {
11053 return NULL;
11054 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011055 Token * _literal;
11056 if (
11057 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
11058 )
11059 {
11060 _res = _literal;
11061 goto done;
11062 }
11063 p->mark = _mark;
11064 }
11065 { // ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011066 if (p->error_indicator) {
11067 return NULL;
11068 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011069 Token * _literal;
11070 if (
11071 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
11072 )
11073 {
11074 _res = _literal;
11075 goto done;
11076 }
11077 p->mark = _mark;
11078 }
11079 { // ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011080 if (p->error_indicator) {
11081 return NULL;
11082 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011083 Token * _literal;
11084 if (
11085 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11086 )
11087 {
11088 _res = _literal;
11089 goto done;
11090 }
11091 p->mark = _mark;
11092 }
11093 { // ';'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011094 if (p->error_indicator) {
11095 return NULL;
11096 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011097 Token * _literal;
11098 if (
11099 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
11100 )
11101 {
11102 _res = _literal;
11103 goto done;
11104 }
11105 p->mark = _mark;
11106 }
11107 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011108 if (p->error_indicator) {
11109 return NULL;
11110 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011111 Token * newline_var;
11112 if (
11113 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
11114 )
11115 {
11116 _res = newline_var;
11117 goto done;
11118 }
11119 p->mark = _mark;
11120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011121 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011122 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011123 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011124}
11125
11126// targets: ','.target+ ','?
11127static asdl_seq*
11128targets_rule(Parser *p)
11129{
11130 if (p->error_indicator) {
11131 return NULL;
11132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011133 asdl_seq* _res = NULL;
11134 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011135 { // ','.target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011136 if (p->error_indicator) {
11137 return NULL;
11138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011139 void *_opt_var;
11140 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011141 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011142 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011143 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011144 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011145 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011146 )
11147 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011148 _res = a;
11149 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011150 p->error_indicator = 1;
11151 return NULL;
11152 }
11153 goto done;
11154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011155 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011157 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011158 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011159 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011160}
11161
11162// target:
11163// | t_primary '.' NAME !t_lookahead
11164// | t_primary '[' slices ']' !t_lookahead
11165// | t_atom
11166static expr_ty
11167target_rule(Parser *p)
11168{
11169 if (p->error_indicator) {
11170 return NULL;
11171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011172 expr_ty _res = NULL;
11173 if (_PyPegen_is_memoized(p, target_type, &_res))
11174 return _res;
11175 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011176 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11177 p->error_indicator = 1;
11178 return NULL;
11179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011180 int _start_lineno = p->tokens[_mark]->lineno;
11181 UNUSED(_start_lineno); // Only used by EXTRA macro
11182 int _start_col_offset = p->tokens[_mark]->col_offset;
11183 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011184 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011185 if (p->error_indicator) {
11186 return NULL;
11187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011188 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011189 expr_ty a;
11190 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011192 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011193 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011194 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011195 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011196 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011197 &&
11198 _PyPegen_lookahead(0, t_lookahead_rule, p)
11199 )
11200 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011201 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11202 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011203 return NULL;
11204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011205 int _end_lineno = _token->end_lineno;
11206 UNUSED(_end_lineno); // Only used by EXTRA macro
11207 int _end_col_offset = _token->end_col_offset;
11208 UNUSED(_end_col_offset); // Only used by EXTRA macro
11209 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
11210 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011211 p->error_indicator = 1;
11212 return NULL;
11213 }
11214 goto done;
11215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011216 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011217 }
11218 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011219 if (p->error_indicator) {
11220 return NULL;
11221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011222 Token * _literal;
11223 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011224 expr_ty a;
11225 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011226 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011227 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011228 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011229 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011230 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011231 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011232 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011233 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011234 &&
11235 _PyPegen_lookahead(0, t_lookahead_rule, p)
11236 )
11237 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011238 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11239 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011240 return NULL;
11241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011242 int _end_lineno = _token->end_lineno;
11243 UNUSED(_end_lineno); // Only used by EXTRA macro
11244 int _end_col_offset = _token->end_col_offset;
11245 UNUSED(_end_col_offset); // Only used by EXTRA macro
11246 _res = _Py_Subscript ( a , b , Store , EXTRA );
11247 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011248 p->error_indicator = 1;
11249 return NULL;
11250 }
11251 goto done;
11252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011253 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011254 }
11255 { // t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011256 if (p->error_indicator) {
11257 return NULL;
11258 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011259 expr_ty t_atom_var;
11260 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011261 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011262 )
11263 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011264 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011265 goto done;
11266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011267 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011269 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011270 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011271 _PyPegen_insert_memo(p, _mark, target_type, _res);
11272 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011273}
11274
11275// Left-recursive
11276// t_primary:
11277// | t_primary '.' NAME &t_lookahead
11278// | t_primary '[' slices ']' &t_lookahead
11279// | t_primary genexp &t_lookahead
11280// | t_primary '(' arguments? ')' &t_lookahead
11281// | atom &t_lookahead
11282static expr_ty t_primary_raw(Parser *);
11283static expr_ty
11284t_primary_rule(Parser *p)
11285{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011286 expr_ty _res = NULL;
11287 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
11288 return _res;
11289 int _mark = p->mark;
11290 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011291 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011292 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011293 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011296 p->mark = _mark;
11297 void *_raw = t_primary_raw(p);
11298 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011299 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011300 _resmark = p->mark;
11301 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011303 p->mark = _resmark;
11304 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011305}
11306static expr_ty
11307t_primary_raw(Parser *p)
11308{
11309 if (p->error_indicator) {
11310 return NULL;
11311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011312 expr_ty _res = NULL;
11313 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011314 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11315 p->error_indicator = 1;
11316 return NULL;
11317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011318 int _start_lineno = p->tokens[_mark]->lineno;
11319 UNUSED(_start_lineno); // Only used by EXTRA macro
11320 int _start_col_offset = p->tokens[_mark]->col_offset;
11321 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011322 { // t_primary '.' NAME &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011323 if (p->error_indicator) {
11324 return NULL;
11325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011326 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011327 expr_ty a;
11328 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011329 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011330 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011331 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011332 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011333 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011334 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011335 &&
11336 _PyPegen_lookahead(1, t_lookahead_rule, p)
11337 )
11338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11340 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011341 return NULL;
11342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011343 int _end_lineno = _token->end_lineno;
11344 UNUSED(_end_lineno); // Only used by EXTRA macro
11345 int _end_col_offset = _token->end_col_offset;
11346 UNUSED(_end_col_offset); // Only used by EXTRA macro
11347 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
11348 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011349 p->error_indicator = 1;
11350 return NULL;
11351 }
11352 goto done;
11353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011354 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011355 }
11356 { // t_primary '[' slices ']' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011357 if (p->error_indicator) {
11358 return NULL;
11359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011360 Token * _literal;
11361 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011362 expr_ty a;
11363 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011365 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011366 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011367 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011369 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011370 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011371 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011372 &&
11373 _PyPegen_lookahead(1, t_lookahead_rule, p)
11374 )
11375 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011376 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11377 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011378 return NULL;
11379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011380 int _end_lineno = _token->end_lineno;
11381 UNUSED(_end_lineno); // Only used by EXTRA macro
11382 int _end_col_offset = _token->end_col_offset;
11383 UNUSED(_end_col_offset); // Only used by EXTRA macro
11384 _res = _Py_Subscript ( a , b , Load , EXTRA );
11385 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011386 p->error_indicator = 1;
11387 return NULL;
11388 }
11389 goto done;
11390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011392 }
11393 { // t_primary genexp &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011394 if (p->error_indicator) {
11395 return NULL;
11396 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011397 expr_ty a;
11398 expr_ty b;
11399 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011400 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011401 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011402 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011403 &&
11404 _PyPegen_lookahead(1, t_lookahead_rule, p)
11405 )
11406 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011407 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11408 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011409 return NULL;
11410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011411 int _end_lineno = _token->end_lineno;
11412 UNUSED(_end_lineno); // Only used by EXTRA macro
11413 int _end_col_offset = _token->end_col_offset;
11414 UNUSED(_end_col_offset); // Only used by EXTRA macro
11415 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
11416 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011417 p->error_indicator = 1;
11418 return NULL;
11419 }
11420 goto done;
11421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011422 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011423 }
11424 { // t_primary '(' arguments? ')' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011425 if (p->error_indicator) {
11426 return NULL;
11427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011428 Token * _literal;
11429 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011430 expr_ty a;
11431 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011432 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011433 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011434 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011435 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011436 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011437 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011438 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011439 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011440 &&
11441 _PyPegen_lookahead(1, t_lookahead_rule, p)
11442 )
11443 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011444 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11445 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011446 return NULL;
11447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011448 int _end_lineno = _token->end_lineno;
11449 UNUSED(_end_lineno); // Only used by EXTRA macro
11450 int _end_col_offset = _token->end_col_offset;
11451 UNUSED(_end_col_offset); // Only used by EXTRA macro
11452 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
11453 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011454 p->error_indicator = 1;
11455 return NULL;
11456 }
11457 goto done;
11458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011459 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011460 }
11461 { // atom &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011462 if (p->error_indicator) {
11463 return NULL;
11464 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011465 expr_ty a;
11466 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011467 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011468 &&
11469 _PyPegen_lookahead(1, t_lookahead_rule, p)
11470 )
11471 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011472 _res = a;
11473 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011474 p->error_indicator = 1;
11475 return NULL;
11476 }
11477 goto done;
11478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011479 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011481 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011482 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011483 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011484}
11485
11486// t_lookahead: '(' | '[' | '.'
11487static void *
11488t_lookahead_rule(Parser *p)
11489{
11490 if (p->error_indicator) {
11491 return NULL;
11492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011493 void * _res = NULL;
11494 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011495 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011496 if (p->error_indicator) {
11497 return NULL;
11498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011499 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011500 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011501 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011502 )
11503 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011504 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011505 goto done;
11506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011508 }
11509 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011510 if (p->error_indicator) {
11511 return NULL;
11512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011513 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011514 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011515 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011516 )
11517 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011518 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011519 goto done;
11520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011521 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011522 }
11523 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011524 if (p->error_indicator) {
11525 return NULL;
11526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011527 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011528 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011529 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011530 )
11531 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011532 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011533 goto done;
11534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011535 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011537 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011538 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011539 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011540}
11541
11542// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
11543static expr_ty
11544t_atom_rule(Parser *p)
11545{
11546 if (p->error_indicator) {
11547 return NULL;
11548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011549 expr_ty _res = NULL;
11550 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011551 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11552 p->error_indicator = 1;
11553 return NULL;
11554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011555 int _start_lineno = p->tokens[_mark]->lineno;
11556 UNUSED(_start_lineno); // Only used by EXTRA macro
11557 int _start_col_offset = p->tokens[_mark]->col_offset;
11558 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011559 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011560 if (p->error_indicator) {
11561 return NULL;
11562 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011563 expr_ty a;
11564 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011565 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011566 )
11567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011568 _res = _PyPegen_set_expr_context ( p , a , Store );
11569 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011570 p->error_indicator = 1;
11571 return NULL;
11572 }
11573 goto done;
11574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011575 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011576 }
11577 { // '(' target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011578 if (p->error_indicator) {
11579 return NULL;
11580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011581 Token * _literal;
11582 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011583 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011584 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011585 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011586 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011587 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011588 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011589 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011590 )
11591 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011592 _res = _PyPegen_set_expr_context ( p , a , Store );
11593 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011594 p->error_indicator = 1;
11595 return NULL;
11596 }
11597 goto done;
11598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011599 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011600 }
11601 { // '(' targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011602 if (p->error_indicator) {
11603 return NULL;
11604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011605 Token * _literal;
11606 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011607 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011608 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011609 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011610 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011611 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011612 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011613 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011614 )
11615 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011616 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11617 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011618 return NULL;
11619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011620 int _end_lineno = _token->end_lineno;
11621 UNUSED(_end_lineno); // Only used by EXTRA macro
11622 int _end_col_offset = _token->end_col_offset;
11623 UNUSED(_end_col_offset); // Only used by EXTRA macro
11624 _res = _Py_Tuple ( b , Store , EXTRA );
11625 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011626 p->error_indicator = 1;
11627 return NULL;
11628 }
11629 goto done;
11630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011631 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011632 }
11633 { // '[' targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011634 if (p->error_indicator) {
11635 return NULL;
11636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011637 Token * _literal;
11638 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011639 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011640 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011641 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011642 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011643 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011644 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011645 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011646 )
11647 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011648 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11649 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011650 return NULL;
11651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011652 int _end_lineno = _token->end_lineno;
11653 UNUSED(_end_lineno); // Only used by EXTRA macro
11654 int _end_col_offset = _token->end_col_offset;
11655 UNUSED(_end_col_offset); // Only used by EXTRA macro
11656 _res = _Py_List ( b , Store , EXTRA );
11657 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011658 p->error_indicator = 1;
11659 return NULL;
11660 }
11661 goto done;
11662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011663 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011665 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011666 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011667 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011668}
11669
11670// incorrect_arguments:
11671// | args ',' '*'
11672// | expression for_if_clauses ',' [args | expression for_if_clauses]
11673// | args ',' args
11674static void *
11675incorrect_arguments_rule(Parser *p)
11676{
11677 if (p->error_indicator) {
11678 return NULL;
11679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011680 void * _res = NULL;
11681 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011682 { // args ',' '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011683 if (p->error_indicator) {
11684 return NULL;
11685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011686 Token * _literal;
11687 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011688 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011689 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011690 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011691 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011692 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011693 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011694 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011695 )
11696 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011697 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
11698 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011699 p->error_indicator = 1;
11700 return NULL;
11701 }
11702 goto done;
11703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011704 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011705 }
11706 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011707 if (p->error_indicator) {
11708 return NULL;
11709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011710 Token * _literal;
11711 void *_opt_var;
11712 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011713 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011714 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011715 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011716 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011717 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011718 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011719 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011720 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011721 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011722 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011723 )
11724 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011725 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011726 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011727 p->error_indicator = 1;
11728 return NULL;
11729 }
11730 goto done;
11731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011732 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011733 }
11734 { // args ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011735 if (p->error_indicator) {
11736 return NULL;
11737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011738 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011739 expr_ty a;
11740 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011741 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011742 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011743 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011744 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011745 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011746 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011747 )
11748 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011749 _res = _PyPegen_arguments_parsing_error ( p , a );
11750 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011751 p->error_indicator = 1;
11752 return NULL;
11753 }
11754 goto done;
11755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011756 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011758 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011759 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011760 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011761}
11762
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011763// invalid_kwarg: expression '='
11764static void *
11765invalid_kwarg_rule(Parser *p)
11766{
11767 if (p->error_indicator) {
11768 return NULL;
11769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011770 void * _res = NULL;
11771 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011772 { // expression '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011773 if (p->error_indicator) {
11774 return NULL;
11775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011776 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011777 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011778 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011779 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011780 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011781 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011782 )
11783 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011784 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011785 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011786 p->error_indicator = 1;
11787 return NULL;
11788 }
11789 goto done;
11790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011791 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011793 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011794 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011795 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011796}
11797
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011798// invalid_named_expression: expression ':=' expression
11799static void *
11800invalid_named_expression_rule(Parser *p)
11801{
11802 if (p->error_indicator) {
11803 return NULL;
11804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011805 void * _res = NULL;
11806 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011807 { // expression ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011808 if (p->error_indicator) {
11809 return NULL;
11810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011811 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011812 expr_ty a;
11813 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011814 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011815 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011816 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011817 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011818 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011819 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011820 )
11821 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011822 _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 +010011823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011824 p->error_indicator = 1;
11825 return NULL;
11826 }
11827 goto done;
11828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011829 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011831 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011832 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011833 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011834}
11835
11836// invalid_assignment:
11837// | list ':'
11838// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011839// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011840// | expression ':' expression ['=' annotated_rhs]
Pablo Galindo16ab0702020-05-15 02:04:52 +010011841// | star_expressions '=' (yield_expr | star_expressions)
11842// | star_expressions augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011843static void *
11844invalid_assignment_rule(Parser *p)
11845{
11846 if (p->error_indicator) {
11847 return NULL;
11848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011849 void * _res = NULL;
11850 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011851 { // list ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011852 if (p->error_indicator) {
11853 return NULL;
11854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011855 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011856 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011857 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011858 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011859 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011860 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011861 )
11862 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011863 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011864 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011865 p->error_indicator = 1;
11866 return NULL;
11867 }
11868 goto done;
11869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011871 }
11872 { // tuple ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011873 if (p->error_indicator) {
11874 return NULL;
11875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011876 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011877 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011878 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011879 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011880 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011881 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011882 )
11883 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011884 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
11885 if (_res == NULL && PyErr_Occurred()) {
11886 p->error_indicator = 1;
11887 return NULL;
11888 }
11889 goto done;
11890 }
11891 p->mark = _mark;
11892 }
11893 { // star_named_expression ',' star_named_expressions* ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011894 if (p->error_indicator) {
11895 return NULL;
11896 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011897 Token * _literal;
11898 Token * _literal_1;
11899 asdl_seq * _loop0_126_var;
11900 expr_ty a;
11901 if (
11902 (a = star_named_expression_rule(p)) // star_named_expression
11903 &&
11904 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11905 &&
11906 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
11907 &&
11908 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
11909 )
11910 {
11911 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011912 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011913 p->error_indicator = 1;
11914 return NULL;
11915 }
11916 goto done;
11917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011918 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011919 }
11920 { // expression ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011921 if (p->error_indicator) {
11922 return NULL;
11923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011924 Token * _literal;
11925 void *_opt_var;
11926 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011927 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011928 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011929 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011930 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011931 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011932 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011933 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011934 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011935 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011936 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011937 )
11938 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011939 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011940 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011941 p->error_indicator = 1;
11942 return NULL;
11943 }
11944 goto done;
11945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011946 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011947 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011948 { // star_expressions '=' (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011949 if (p->error_indicator) {
11950 return NULL;
11951 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011952 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070011953 void *_tmp_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011954 expr_ty a;
11955 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010011956 (a = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011957 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010011958 (_literal = _PyPegen_expect_token(p, 22)) // token='='
11959 &&
11960 (_tmp_128_var = _tmp_128_rule(p)) // yield_expr | star_expressions
11961 )
11962 {
11963 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( _PyPegen_get_invalid_target ( a ) , "cannot assign to %s" , _PyPegen_get_expr_name ( _PyPegen_get_invalid_target ( a ) ) );
11964 if (_res == NULL && PyErr_Occurred()) {
11965 p->error_indicator = 1;
11966 return NULL;
11967 }
11968 goto done;
11969 }
11970 p->mark = _mark;
11971 }
11972 { // star_expressions augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011973 if (p->error_indicator) {
11974 return NULL;
11975 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011976 void *_tmp_129_var;
11977 expr_ty a;
11978 AugOperator* augassign_var;
11979 if (
11980 (a = star_expressions_rule(p)) // star_expressions
11981 &&
11982 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010011983 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011984 (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011985 )
11986 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010011987 _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 +010011988 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011989 p->error_indicator = 1;
11990 return NULL;
11991 }
11992 goto done;
11993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011994 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011996 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011997 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011998 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011999}
12000
12001// invalid_block: NEWLINE !INDENT
12002static void *
12003invalid_block_rule(Parser *p)
12004{
12005 if (p->error_indicator) {
12006 return NULL;
12007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012008 void * _res = NULL;
12009 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012010 { // NEWLINE !INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012011 if (p->error_indicator) {
12012 return NULL;
12013 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012014 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012015 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012016 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012017 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012018 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012019 )
12020 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012021 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
12022 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012023 p->error_indicator = 1;
12024 return NULL;
12025 }
12026 goto done;
12027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012028 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012030 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012031 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012032 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012033}
12034
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012035// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012036static void *
12037invalid_comprehension_rule(Parser *p)
12038{
12039 if (p->error_indicator) {
12040 return NULL;
12041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012042 void * _res = NULL;
12043 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012044 { // ('[' | '(' | '{') starred_expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012045 if (p->error_indicator) {
12046 return NULL;
12047 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012048 void *_tmp_130_var;
12049 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012050 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012051 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012052 (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012053 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012054 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012055 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012056 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012057 )
12058 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012059 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012060 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012061 p->error_indicator = 1;
12062 return NULL;
12063 }
12064 goto done;
12065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012066 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012068 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012069 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012070 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012071}
12072
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070012073// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
12074static void *
12075invalid_dict_comprehension_rule(Parser *p)
12076{
12077 if (p->error_indicator) {
12078 return NULL;
12079 }
12080 void * _res = NULL;
12081 int _mark = p->mark;
12082 { // '{' '**' bitwise_or for_if_clauses '}'
12083 if (p->error_indicator) {
12084 return NULL;
12085 }
12086 Token * _literal;
12087 Token * _literal_1;
12088 Token * a;
12089 expr_ty bitwise_or_var;
12090 asdl_seq* for_if_clauses_var;
12091 if (
12092 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
12093 &&
12094 (a = _PyPegen_expect_token(p, 35)) // token='**'
12095 &&
12096 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
12097 &&
12098 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
12099 &&
12100 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
12101 )
12102 {
12103 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
12104 if (_res == NULL && PyErr_Occurred()) {
12105 p->error_indicator = 1;
12106 return NULL;
12107 }
12108 goto done;
12109 }
12110 p->mark = _mark;
12111 }
12112 _res = NULL;
12113 done:
12114 return _res;
12115}
12116
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012117// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070012118// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012119static void *
12120invalid_parameters_rule(Parser *p)
12121{
12122 if (p->error_indicator) {
12123 return NULL;
12124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012125 void * _res = NULL;
12126 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012127 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012128 if (p->error_indicator) {
12129 return NULL;
12130 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012131 asdl_seq * _loop0_131_var;
12132 void *_tmp_132_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012133 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012134 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012135 (_loop0_131_var = _loop0_131_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012136 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012137 (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012138 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012139 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012140 )
12141 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012142 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
12143 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012144 p->error_indicator = 1;
12145 return NULL;
12146 }
12147 goto done;
12148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012149 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012151 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012152 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012153 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012154}
12155
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012156// invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012157static void *
12158invalid_star_etc_rule(Parser *p)
12159{
12160 if (p->error_indicator) {
12161 return NULL;
12162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012163 void * _res = NULL;
12164 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012165 { // '*' (')' | ',' (')' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012166 if (p->error_indicator) {
12167 return NULL;
12168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012169 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012170 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012171 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012172 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012173 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012174 (_tmp_133_var = _tmp_133_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012175 )
12176 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012177 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12178 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012179 p->error_indicator = 1;
12180 return NULL;
12181 }
12182 goto done;
12183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012184 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012185 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012186 { // '*' ',' TYPE_COMMENT
Pablo Galindoced4e5c2020-05-18 22:47:51 +010012187 if (p->error_indicator) {
12188 return NULL;
12189 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012190 Token * _literal;
12191 Token * _literal_1;
12192 Token * type_comment_var;
12193 if (
12194 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
12195 &&
12196 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
12197 &&
12198 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
12199 )
12200 {
12201 _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
12202 if (_res == NULL && PyErr_Occurred()) {
12203 p->error_indicator = 1;
12204 return NULL;
12205 }
12206 goto done;
12207 }
12208 p->mark = _mark;
12209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012210 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012211 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012212 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012213}
12214
12215// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
12216static void *
12217invalid_lambda_star_etc_rule(Parser *p)
12218{
12219 if (p->error_indicator) {
12220 return NULL;
12221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012222 void * _res = NULL;
12223 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012224 { // '*' (':' | ',' (':' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012225 if (p->error_indicator) {
12226 return NULL;
12227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012228 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012229 void *_tmp_134_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012230 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012231 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012232 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012233 (_tmp_134_var = _tmp_134_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012234 )
12235 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012236 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12237 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012238 p->error_indicator = 1;
12239 return NULL;
12240 }
12241 goto done;
12242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012243 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012245 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012246 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012247 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012248}
12249
Guido van Rossumc001c092020-04-30 12:12:19 -070012250// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
12251static void *
12252invalid_double_type_comments_rule(Parser *p)
12253{
12254 if (p->error_indicator) {
12255 return NULL;
12256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012257 void * _res = NULL;
12258 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012259 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012260 if (p->error_indicator) {
12261 return NULL;
12262 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012263 Token * indent_var;
12264 Token * newline_var;
12265 Token * newline_var_1;
12266 Token * type_comment_var;
12267 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070012268 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012269 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012270 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012271 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012272 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012273 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012274 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012275 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012276 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012277 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012278 )
12279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012280 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
12281 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012282 p->error_indicator = 1;
12283 return NULL;
12284 }
12285 goto done;
12286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012287 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012289 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012290 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012291 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012292}
12293
Shantanu27c0d9b2020-05-11 14:53:58 -070012294// invalid_del_target: star_expression &del_target_end
12295static void *
12296invalid_del_target_rule(Parser *p)
12297{
12298 if (p->error_indicator) {
12299 return NULL;
12300 }
12301 void * _res = NULL;
12302 int _mark = p->mark;
12303 { // star_expression &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012304 if (p->error_indicator) {
12305 return NULL;
12306 }
Shantanu27c0d9b2020-05-11 14:53:58 -070012307 expr_ty a;
12308 if (
12309 (a = star_expression_rule(p)) // star_expression
12310 &&
12311 _PyPegen_lookahead(1, del_target_end_rule, p)
12312 )
12313 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012314 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070012315 if (_res == NULL && PyErr_Occurred()) {
12316 p->error_indicator = 1;
12317 return NULL;
12318 }
12319 goto done;
12320 }
12321 p->mark = _mark;
12322 }
12323 _res = NULL;
12324 done:
12325 return _res;
12326}
12327
Pablo Galindo275d7e12020-05-21 22:04:54 +010012328// invalid_import_from_targets: import_from_as_names ','
12329static void *
12330invalid_import_from_targets_rule(Parser *p)
12331{
12332 if (p->error_indicator) {
12333 return NULL;
12334 }
12335 void * _res = NULL;
12336 int _mark = p->mark;
12337 { // import_from_as_names ','
12338 if (p->error_indicator) {
12339 return NULL;
12340 }
12341 Token * _literal;
12342 asdl_seq* import_from_as_names_var;
12343 if (
12344 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
12345 &&
12346 (_literal = _PyPegen_expect_token(p, 12)) // token=','
12347 )
12348 {
12349 _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
12350 if (_res == NULL && PyErr_Occurred()) {
12351 p->error_indicator = 1;
12352 return NULL;
12353 }
12354 goto done;
12355 }
12356 p->mark = _mark;
12357 }
12358 _res = NULL;
12359 done:
12360 return _res;
12361}
12362
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012363// _loop0_1: NEWLINE
12364static asdl_seq *
12365_loop0_1_rule(Parser *p)
12366{
12367 if (p->error_indicator) {
12368 return NULL;
12369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012370 void *_res = NULL;
12371 int _mark = p->mark;
12372 int _start_mark = p->mark;
12373 void **_children = PyMem_Malloc(sizeof(void *));
12374 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012375 p->error_indicator = 1;
12376 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012377 return NULL;
12378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012379 ssize_t _children_capacity = 1;
12380 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012381 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012382 if (p->error_indicator) {
12383 return NULL;
12384 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012385 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012386 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012387 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012388 )
12389 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012390 _res = newline_var;
12391 if (_n == _children_capacity) {
12392 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012393 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12394 if (!_new_children) {
12395 p->error_indicator = 1;
12396 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012397 return NULL;
12398 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012399 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012401 _children[_n++] = _res;
12402 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012404 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012406 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12407 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012408 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012409 p->error_indicator = 1;
12410 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012411 return NULL;
12412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012413 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12414 PyMem_Free(_children);
12415 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
12416 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012417}
12418
Guido van Rossumc001c092020-04-30 12:12:19 -070012419// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012420static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012421_loop0_2_rule(Parser *p)
12422{
12423 if (p->error_indicator) {
12424 return NULL;
12425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012426 void *_res = NULL;
12427 int _mark = p->mark;
12428 int _start_mark = p->mark;
12429 void **_children = PyMem_Malloc(sizeof(void *));
12430 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012431 p->error_indicator = 1;
12432 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012433 return NULL;
12434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012435 ssize_t _children_capacity = 1;
12436 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012437 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012438 if (p->error_indicator) {
12439 return NULL;
12440 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012441 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012442 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012443 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012444 )
12445 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012446 _res = newline_var;
12447 if (_n == _children_capacity) {
12448 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012449 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12450 if (!_new_children) {
12451 p->error_indicator = 1;
12452 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012453 return NULL;
12454 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012455 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012457 _children[_n++] = _res;
12458 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012460 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012462 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12463 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012464 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012465 p->error_indicator = 1;
12466 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012467 return NULL;
12468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012469 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12470 PyMem_Free(_children);
12471 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
12472 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012473}
12474
12475// _loop0_4: ',' expression
12476static asdl_seq *
12477_loop0_4_rule(Parser *p)
12478{
12479 if (p->error_indicator) {
12480 return NULL;
12481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012482 void *_res = NULL;
12483 int _mark = p->mark;
12484 int _start_mark = p->mark;
12485 void **_children = PyMem_Malloc(sizeof(void *));
12486 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012487 p->error_indicator = 1;
12488 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012489 return NULL;
12490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012491 ssize_t _children_capacity = 1;
12492 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012493 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012494 if (p->error_indicator) {
12495 return NULL;
12496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012497 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012498 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012499 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012500 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012501 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012502 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012503 )
12504 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012505 _res = elem;
12506 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012507 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012508 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012509 return NULL;
12510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012511 if (_n == _children_capacity) {
12512 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012513 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12514 if (!_new_children) {
12515 p->error_indicator = 1;
12516 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012517 return NULL;
12518 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012519 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012521 _children[_n++] = _res;
12522 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012524 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012526 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12527 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012528 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012529 p->error_indicator = 1;
12530 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012531 return NULL;
12532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012533 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12534 PyMem_Free(_children);
12535 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
12536 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012537}
12538
12539// _gather_3: expression _loop0_4
12540static asdl_seq *
12541_gather_3_rule(Parser *p)
12542{
12543 if (p->error_indicator) {
12544 return NULL;
12545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012546 asdl_seq * _res = NULL;
12547 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012548 { // expression _loop0_4
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012549 if (p->error_indicator) {
12550 return NULL;
12551 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012552 expr_ty elem;
12553 asdl_seq * seq;
12554 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012555 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012556 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012557 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070012558 )
12559 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012560 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012561 goto done;
12562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012563 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012565 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012566 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012567 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012568}
12569
12570// _loop0_6: ',' expression
12571static asdl_seq *
12572_loop0_6_rule(Parser *p)
12573{
12574 if (p->error_indicator) {
12575 return NULL;
12576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012577 void *_res = NULL;
12578 int _mark = p->mark;
12579 int _start_mark = p->mark;
12580 void **_children = PyMem_Malloc(sizeof(void *));
12581 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012582 p->error_indicator = 1;
12583 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012584 return NULL;
12585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012586 ssize_t _children_capacity = 1;
12587 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012588 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012589 if (p->error_indicator) {
12590 return NULL;
12591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012592 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012593 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012594 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012595 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012596 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012597 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012598 )
12599 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012600 _res = elem;
12601 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012602 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012603 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012604 return NULL;
12605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012606 if (_n == _children_capacity) {
12607 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012608 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12609 if (!_new_children) {
12610 p->error_indicator = 1;
12611 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012612 return NULL;
12613 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012614 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012616 _children[_n++] = _res;
12617 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012619 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012621 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12622 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012623 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012624 p->error_indicator = 1;
12625 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012626 return NULL;
12627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012628 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12629 PyMem_Free(_children);
12630 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
12631 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012632}
12633
12634// _gather_5: expression _loop0_6
12635static asdl_seq *
12636_gather_5_rule(Parser *p)
12637{
12638 if (p->error_indicator) {
12639 return NULL;
12640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012641 asdl_seq * _res = NULL;
12642 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012643 { // expression _loop0_6
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012644 if (p->error_indicator) {
12645 return NULL;
12646 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012647 expr_ty elem;
12648 asdl_seq * seq;
12649 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012650 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012651 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012652 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070012653 )
12654 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012655 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012656 goto done;
12657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012658 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012660 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012661 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012662 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012663}
12664
12665// _loop0_8: ',' expression
12666static asdl_seq *
12667_loop0_8_rule(Parser *p)
12668{
12669 if (p->error_indicator) {
12670 return NULL;
12671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012672 void *_res = NULL;
12673 int _mark = p->mark;
12674 int _start_mark = p->mark;
12675 void **_children = PyMem_Malloc(sizeof(void *));
12676 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012677 p->error_indicator = 1;
12678 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012679 return NULL;
12680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012681 ssize_t _children_capacity = 1;
12682 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012683 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012684 if (p->error_indicator) {
12685 return NULL;
12686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012687 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012688 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012689 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012690 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012691 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012692 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012693 )
12694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012695 _res = elem;
12696 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012697 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012698 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012699 return NULL;
12700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012701 if (_n == _children_capacity) {
12702 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012703 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12704 if (!_new_children) {
12705 p->error_indicator = 1;
12706 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012707 return NULL;
12708 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012709 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012711 _children[_n++] = _res;
12712 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012713 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012714 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012716 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12717 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012718 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012719 p->error_indicator = 1;
12720 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012721 return NULL;
12722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012723 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12724 PyMem_Free(_children);
12725 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
12726 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012727}
12728
12729// _gather_7: expression _loop0_8
12730static asdl_seq *
12731_gather_7_rule(Parser *p)
12732{
12733 if (p->error_indicator) {
12734 return NULL;
12735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012736 asdl_seq * _res = NULL;
12737 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012738 { // expression _loop0_8
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012739 if (p->error_indicator) {
12740 return NULL;
12741 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012742 expr_ty elem;
12743 asdl_seq * seq;
12744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012745 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012746 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012747 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070012748 )
12749 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012750 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012751 goto done;
12752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012753 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012755 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012756 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012757 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012758}
12759
12760// _loop0_10: ',' expression
12761static asdl_seq *
12762_loop0_10_rule(Parser *p)
12763{
12764 if (p->error_indicator) {
12765 return NULL;
12766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012767 void *_res = NULL;
12768 int _mark = p->mark;
12769 int _start_mark = p->mark;
12770 void **_children = PyMem_Malloc(sizeof(void *));
12771 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012772 p->error_indicator = 1;
12773 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012774 return NULL;
12775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012776 ssize_t _children_capacity = 1;
12777 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012778 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012779 if (p->error_indicator) {
12780 return NULL;
12781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012782 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012783 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012784 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012785 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012786 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012787 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012788 )
12789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012790 _res = elem;
12791 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012792 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012793 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012794 return NULL;
12795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012796 if (_n == _children_capacity) {
12797 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012798 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12799 if (!_new_children) {
12800 p->error_indicator = 1;
12801 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012802 return NULL;
12803 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012804 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012806 _children[_n++] = _res;
12807 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012809 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012811 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12812 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012813 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012814 p->error_indicator = 1;
12815 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012816 return NULL;
12817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012818 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12819 PyMem_Free(_children);
12820 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
12821 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012822}
12823
12824// _gather_9: expression _loop0_10
12825static asdl_seq *
12826_gather_9_rule(Parser *p)
12827{
12828 if (p->error_indicator) {
12829 return NULL;
12830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012831 asdl_seq * _res = NULL;
12832 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012833 { // expression _loop0_10
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012834 if (p->error_indicator) {
12835 return NULL;
12836 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012837 expr_ty elem;
12838 asdl_seq * seq;
12839 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012840 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012841 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012842 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070012843 )
12844 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012845 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012846 goto done;
12847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012848 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012850 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012851 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012852 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012853}
12854
12855// _loop1_11: statement
12856static asdl_seq *
12857_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012858{
12859 if (p->error_indicator) {
12860 return NULL;
12861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012862 void *_res = NULL;
12863 int _mark = p->mark;
12864 int _start_mark = p->mark;
12865 void **_children = PyMem_Malloc(sizeof(void *));
12866 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012867 p->error_indicator = 1;
12868 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012869 return NULL;
12870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012871 ssize_t _children_capacity = 1;
12872 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012873 { // statement
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012874 if (p->error_indicator) {
12875 return NULL;
12876 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012877 asdl_seq* statement_var;
12878 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012879 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012880 )
12881 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012882 _res = statement_var;
12883 if (_n == _children_capacity) {
12884 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012885 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12886 if (!_new_children) {
12887 p->error_indicator = 1;
12888 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012889 return NULL;
12890 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012891 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012893 _children[_n++] = _res;
12894 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012896 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012898 if (_n == 0 || p->error_indicator) {
12899 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012900 return NULL;
12901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012902 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12903 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012904 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012905 p->error_indicator = 1;
12906 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012907 return NULL;
12908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012909 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12910 PyMem_Free(_children);
12911 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
12912 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012913}
12914
Guido van Rossumc001c092020-04-30 12:12:19 -070012915// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012916static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012917_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012918{
12919 if (p->error_indicator) {
12920 return NULL;
12921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012922 void *_res = NULL;
12923 int _mark = p->mark;
12924 int _start_mark = p->mark;
12925 void **_children = PyMem_Malloc(sizeof(void *));
12926 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012927 p->error_indicator = 1;
12928 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012929 return NULL;
12930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012931 ssize_t _children_capacity = 1;
12932 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012933 { // ';' small_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012934 if (p->error_indicator) {
12935 return NULL;
12936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012937 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012938 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012939 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012940 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012942 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012943 )
12944 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012945 _res = elem;
12946 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012947 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012948 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012949 return NULL;
12950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012951 if (_n == _children_capacity) {
12952 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012953 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12954 if (!_new_children) {
12955 p->error_indicator = 1;
12956 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012957 return NULL;
12958 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012959 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012961 _children[_n++] = _res;
12962 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012964 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012966 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12967 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012968 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012969 p->error_indicator = 1;
12970 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012971 return NULL;
12972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012973 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12974 PyMem_Free(_children);
12975 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
12976 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012977}
12978
Guido van Rossumc001c092020-04-30 12:12:19 -070012979// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012980static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012981_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012982{
12983 if (p->error_indicator) {
12984 return NULL;
12985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012986 asdl_seq * _res = NULL;
12987 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012988 { // small_stmt _loop0_13
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012989 if (p->error_indicator) {
12990 return NULL;
12991 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012992 stmt_ty elem;
12993 asdl_seq * seq;
12994 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012995 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012996 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012997 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012998 )
12999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013000 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013001 goto done;
13002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013003 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013005 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013006 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013007 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013008}
13009
Guido van Rossumc001c092020-04-30 12:12:19 -070013010// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013011static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013012_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013013{
13014 if (p->error_indicator) {
13015 return NULL;
13016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013017 void * _res = NULL;
13018 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013019 { // 'import'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013020 if (p->error_indicator) {
13021 return NULL;
13022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013023 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013024 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013025 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013026 )
13027 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013028 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013029 goto done;
13030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013031 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013032 }
13033 { // 'from'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013034 if (p->error_indicator) {
13035 return NULL;
13036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013037 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013038 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013039 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013040 )
13041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013042 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013043 goto done;
13044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013045 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013047 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013048 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013049 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013050}
13051
Guido van Rossumc001c092020-04-30 12:12:19 -070013052// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013053static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013054_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013055{
13056 if (p->error_indicator) {
13057 return NULL;
13058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013059 void * _res = NULL;
13060 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013061 { // 'def'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013062 if (p->error_indicator) {
13063 return NULL;
13064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013065 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013066 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013067 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013068 )
13069 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013070 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013071 goto done;
13072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013073 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013074 }
13075 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013076 if (p->error_indicator) {
13077 return NULL;
13078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013079 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013080 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013081 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013082 )
13083 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013084 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013085 goto done;
13086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013087 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013088 }
13089 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013090 if (p->error_indicator) {
13091 return NULL;
13092 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013093 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013094 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013095 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013096 )
13097 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013098 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013099 goto done;
13100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013101 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013103 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013104 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013105 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013106}
13107
Guido van Rossumc001c092020-04-30 12:12:19 -070013108// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013109static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013110_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013111{
13112 if (p->error_indicator) {
13113 return NULL;
13114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013115 void * _res = NULL;
13116 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013117 { // 'class'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013118 if (p->error_indicator) {
13119 return NULL;
13120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013121 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013122 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013123 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013124 )
13125 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013126 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013127 goto done;
13128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013129 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013130 }
13131 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013132 if (p->error_indicator) {
13133 return NULL;
13134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013135 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013136 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013137 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013138 )
13139 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013140 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013141 goto done;
13142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013143 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013145 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013146 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013147 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013148}
13149
Guido van Rossumc001c092020-04-30 12:12:19 -070013150// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013151static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013152_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013153{
13154 if (p->error_indicator) {
13155 return NULL;
13156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013157 void * _res = NULL;
13158 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013159 { // 'with'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013160 if (p->error_indicator) {
13161 return NULL;
13162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013163 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013164 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013165 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013166 )
13167 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013168 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013169 goto done;
13170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013171 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013172 }
13173 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013174 if (p->error_indicator) {
13175 return NULL;
13176 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013177 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013178 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013179 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013180 )
13181 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013182 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013183 goto done;
13184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013187 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013188 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013189 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013190}
13191
Guido van Rossumc001c092020-04-30 12:12:19 -070013192// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013193static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013194_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013195{
13196 if (p->error_indicator) {
13197 return NULL;
13198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013199 void * _res = NULL;
13200 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013201 { // 'for'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013202 if (p->error_indicator) {
13203 return NULL;
13204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013205 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013206 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013207 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013208 )
13209 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013210 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013211 goto done;
13212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013213 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013214 }
13215 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013216 if (p->error_indicator) {
13217 return NULL;
13218 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013219 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013220 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013221 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013222 )
13223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013224 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013225 goto done;
13226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013227 p->mark = _mark;
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 Galindoac7a92c2020-05-10 05:34:50 +010013231 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013232}
13233
Guido van Rossumc001c092020-04-30 12:12:19 -070013234// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013235static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013236_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013237{
13238 if (p->error_indicator) {
13239 return NULL;
13240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013241 void * _res = NULL;
13242 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013243 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013244 if (p->error_indicator) {
13245 return NULL;
13246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013247 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013248 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013249 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013250 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013251 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013252 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013253 )
13254 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013255 _res = d;
13256 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013257 p->error_indicator = 1;
13258 return NULL;
13259 }
13260 goto done;
13261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013262 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013264 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013265 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013266 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013267}
13268
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013269// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013270static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013271_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013272{
13273 if (p->error_indicator) {
13274 return NULL;
13275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013276 void * _res = NULL;
13277 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013278 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013279 if (p->error_indicator) {
13280 return NULL;
13281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013282 Token * _literal;
13283 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013284 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013285 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013286 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013287 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013288 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013289 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013290 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013291 )
13292 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013293 _res = b;
13294 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013295 p->error_indicator = 1;
13296 return NULL;
13297 }
13298 goto done;
13299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013300 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013301 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013302 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013303 if (p->error_indicator) {
13304 return NULL;
13305 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013306 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013307 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013308 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013309 )
13310 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013311 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013312 goto done;
13313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013314 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013316 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013317 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013318 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013319}
13320
Guido van Rossumc001c092020-04-30 12:12:19 -070013321// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013322static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013323_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013324{
13325 if (p->error_indicator) {
13326 return NULL;
13327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013328 void * _res = NULL;
13329 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013330 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013331 if (p->error_indicator) {
13332 return NULL;
13333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013334 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013335 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013336 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013337 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013338 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013339 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013340 )
13341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013342 _res = d;
13343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013344 p->error_indicator = 1;
13345 return NULL;
13346 }
13347 goto done;
13348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013351 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013352 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013353 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013354}
13355
Guido van Rossumc001c092020-04-30 12:12:19 -070013356// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013357static asdl_seq *
13358_loop1_22_rule(Parser *p)
13359{
13360 if (p->error_indicator) {
13361 return NULL;
13362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013363 void *_res = NULL;
13364 int _mark = p->mark;
13365 int _start_mark = p->mark;
13366 void **_children = PyMem_Malloc(sizeof(void *));
13367 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013368 p->error_indicator = 1;
13369 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013370 return NULL;
13371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013372 ssize_t _children_capacity = 1;
13373 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013374 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013375 if (p->error_indicator) {
13376 return NULL;
13377 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013378 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013379 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013380 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013381 )
13382 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013383 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013384 if (_n == _children_capacity) {
13385 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013386 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13387 if (!_new_children) {
13388 p->error_indicator = 1;
13389 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013390 return NULL;
13391 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013392 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013394 _children[_n++] = _res;
13395 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013397 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013399 if (_n == 0 || p->error_indicator) {
13400 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013401 return NULL;
13402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013403 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13404 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013405 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013406 p->error_indicator = 1;
13407 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013408 return NULL;
13409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013410 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13411 PyMem_Free(_children);
13412 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
13413 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013414}
13415
Guido van Rossumc001c092020-04-30 12:12:19 -070013416// _tmp_23: yield_expr | star_expressions
13417static void *
13418_tmp_23_rule(Parser *p)
13419{
13420 if (p->error_indicator) {
13421 return NULL;
13422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013423 void * _res = NULL;
13424 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013425 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013426 if (p->error_indicator) {
13427 return NULL;
13428 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013429 expr_ty yield_expr_var;
13430 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013431 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013432 )
13433 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013434 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013435 goto done;
13436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013437 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013438 }
13439 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013440 if (p->error_indicator) {
13441 return NULL;
13442 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013443 expr_ty star_expressions_var;
13444 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013445 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013446 )
13447 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013448 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013449 goto done;
13450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013451 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013453 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013454 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013455 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013456}
13457
13458// _tmp_24: yield_expr | star_expressions
13459static void *
13460_tmp_24_rule(Parser *p)
13461{
13462 if (p->error_indicator) {
13463 return NULL;
13464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013465 void * _res = NULL;
13466 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013467 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013468 if (p->error_indicator) {
13469 return NULL;
13470 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013471 expr_ty yield_expr_var;
13472 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013473 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013474 )
13475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013476 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013477 goto done;
13478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013479 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013480 }
13481 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013482 if (p->error_indicator) {
13483 return NULL;
13484 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013485 expr_ty star_expressions_var;
13486 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013487 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013488 )
13489 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013490 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013491 goto done;
13492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013493 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013495 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013496 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013497 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013498}
13499
13500// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013501static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013502_loop0_26_rule(Parser *p)
13503{
13504 if (p->error_indicator) {
13505 return NULL;
13506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013507 void *_res = NULL;
13508 int _mark = p->mark;
13509 int _start_mark = p->mark;
13510 void **_children = PyMem_Malloc(sizeof(void *));
13511 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013512 p->error_indicator = 1;
13513 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013514 return NULL;
13515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013516 ssize_t _children_capacity = 1;
13517 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013518 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013519 if (p->error_indicator) {
13520 return NULL;
13521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013522 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013523 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013524 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013525 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013526 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013527 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013528 )
13529 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013530 _res = elem;
13531 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013532 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013533 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013534 return NULL;
13535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013536 if (_n == _children_capacity) {
13537 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013538 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13539 if (!_new_children) {
13540 p->error_indicator = 1;
13541 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013542 return NULL;
13543 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013544 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013546 _children[_n++] = _res;
13547 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013549 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013551 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13552 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013553 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013554 p->error_indicator = 1;
13555 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013556 return NULL;
13557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013558 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13559 PyMem_Free(_children);
13560 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
13561 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013562}
13563
13564// _gather_25: NAME _loop0_26
13565static asdl_seq *
13566_gather_25_rule(Parser *p)
13567{
13568 if (p->error_indicator) {
13569 return NULL;
13570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013571 asdl_seq * _res = NULL;
13572 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013573 { // NAME _loop0_26
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013574 if (p->error_indicator) {
13575 return NULL;
13576 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013577 expr_ty elem;
13578 asdl_seq * seq;
13579 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013580 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013581 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013582 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070013583 )
13584 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013585 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013586 goto done;
13587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013588 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013590 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013591 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013592 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013593}
13594
13595// _loop0_28: ',' NAME
13596static asdl_seq *
13597_loop0_28_rule(Parser *p)
13598{
13599 if (p->error_indicator) {
13600 return NULL;
13601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013602 void *_res = NULL;
13603 int _mark = p->mark;
13604 int _start_mark = p->mark;
13605 void **_children = PyMem_Malloc(sizeof(void *));
13606 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013607 p->error_indicator = 1;
13608 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013609 return NULL;
13610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013611 ssize_t _children_capacity = 1;
13612 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013613 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013614 if (p->error_indicator) {
13615 return NULL;
13616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013617 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013618 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013619 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013620 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013621 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013622 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013623 )
13624 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013625 _res = elem;
13626 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013627 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013628 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013629 return NULL;
13630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013631 if (_n == _children_capacity) {
13632 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013633 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13634 if (!_new_children) {
13635 p->error_indicator = 1;
13636 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013637 return NULL;
13638 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013639 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013641 _children[_n++] = _res;
13642 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013644 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013646 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13647 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013648 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013649 p->error_indicator = 1;
13650 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013651 return NULL;
13652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013653 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13654 PyMem_Free(_children);
13655 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
13656 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013657}
13658
13659// _gather_27: NAME _loop0_28
13660static asdl_seq *
13661_gather_27_rule(Parser *p)
13662{
13663 if (p->error_indicator) {
13664 return NULL;
13665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013666 asdl_seq * _res = NULL;
13667 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013668 { // NAME _loop0_28
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013669 if (p->error_indicator) {
13670 return NULL;
13671 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013672 expr_ty elem;
13673 asdl_seq * seq;
13674 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013675 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013676 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013677 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070013678 )
13679 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013680 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013681 goto done;
13682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013683 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013685 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013686 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013687 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013688}
13689
13690// _tmp_29: ',' expression
13691static void *
13692_tmp_29_rule(Parser *p)
13693{
13694 if (p->error_indicator) {
13695 return NULL;
13696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013697 void * _res = NULL;
13698 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013699 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013700 if (p->error_indicator) {
13701 return NULL;
13702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013703 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013704 expr_ty z;
13705 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013706 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013707 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013708 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013709 )
13710 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013711 _res = z;
13712 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013713 p->error_indicator = 1;
13714 return NULL;
13715 }
13716 goto done;
13717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013718 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013720 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013721 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013722 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013723}
13724
13725// _loop0_30: ('.' | '...')
13726static asdl_seq *
13727_loop0_30_rule(Parser *p)
13728{
13729 if (p->error_indicator) {
13730 return NULL;
13731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013732 void *_res = NULL;
13733 int _mark = p->mark;
13734 int _start_mark = p->mark;
13735 void **_children = PyMem_Malloc(sizeof(void *));
13736 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013737 p->error_indicator = 1;
13738 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013739 return NULL;
13740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013741 ssize_t _children_capacity = 1;
13742 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013743 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013744 if (p->error_indicator) {
13745 return NULL;
13746 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013747 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013748 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013749 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013750 )
13751 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013752 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013753 if (_n == _children_capacity) {
13754 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013755 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13756 if (!_new_children) {
13757 p->error_indicator = 1;
13758 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013759 return NULL;
13760 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013761 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013763 _children[_n++] = _res;
13764 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013766 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013768 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13769 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013770 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013771 p->error_indicator = 1;
13772 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013773 return NULL;
13774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013775 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13776 PyMem_Free(_children);
13777 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
13778 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013779}
13780
13781// _loop1_31: ('.' | '...')
13782static asdl_seq *
13783_loop1_31_rule(Parser *p)
13784{
13785 if (p->error_indicator) {
13786 return NULL;
13787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013788 void *_res = NULL;
13789 int _mark = p->mark;
13790 int _start_mark = p->mark;
13791 void **_children = PyMem_Malloc(sizeof(void *));
13792 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013793 p->error_indicator = 1;
13794 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013795 return NULL;
13796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013797 ssize_t _children_capacity = 1;
13798 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013799 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013800 if (p->error_indicator) {
13801 return NULL;
13802 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013803 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013804 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013805 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013806 )
13807 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013808 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013809 if (_n == _children_capacity) {
13810 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013811 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13812 if (!_new_children) {
13813 p->error_indicator = 1;
13814 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013815 return NULL;
13816 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013817 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013819 _children[_n++] = _res;
13820 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013822 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013824 if (_n == 0 || p->error_indicator) {
13825 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013826 return NULL;
13827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013828 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13829 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013830 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013831 p->error_indicator = 1;
13832 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013833 return NULL;
13834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013835 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13836 PyMem_Free(_children);
13837 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
13838 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013839}
13840
13841// _loop0_33: ',' import_from_as_name
13842static asdl_seq *
13843_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013844{
13845 if (p->error_indicator) {
13846 return NULL;
13847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013848 void *_res = NULL;
13849 int _mark = p->mark;
13850 int _start_mark = p->mark;
13851 void **_children = PyMem_Malloc(sizeof(void *));
13852 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013853 p->error_indicator = 1;
13854 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013855 return NULL;
13856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013857 ssize_t _children_capacity = 1;
13858 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013859 { // ',' import_from_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013860 if (p->error_indicator) {
13861 return NULL;
13862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013863 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013864 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013865 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013866 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013867 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013868 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013869 )
13870 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013871 _res = elem;
13872 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013873 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013874 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013875 return NULL;
13876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013877 if (_n == _children_capacity) {
13878 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013879 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13880 if (!_new_children) {
13881 p->error_indicator = 1;
13882 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013883 return NULL;
13884 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013885 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013887 _children[_n++] = _res;
13888 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013890 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013892 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13893 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013894 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013895 p->error_indicator = 1;
13896 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013897 return NULL;
13898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013899 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13900 PyMem_Free(_children);
13901 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
13902 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013903}
13904
Guido van Rossumc001c092020-04-30 12:12:19 -070013905// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013906static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013907_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013908{
13909 if (p->error_indicator) {
13910 return NULL;
13911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013912 asdl_seq * _res = NULL;
13913 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013914 { // import_from_as_name _loop0_33
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013915 if (p->error_indicator) {
13916 return NULL;
13917 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013918 alias_ty elem;
13919 asdl_seq * seq;
13920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013921 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013923 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013924 )
13925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013926 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013927 goto done;
13928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013929 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013931 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013932 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013933 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013934}
13935
Guido van Rossumc001c092020-04-30 12:12:19 -070013936// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013937static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013938_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013939{
13940 if (p->error_indicator) {
13941 return NULL;
13942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013943 void * _res = NULL;
13944 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013945 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013946 if (p->error_indicator) {
13947 return NULL;
13948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013949 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013950 expr_ty z;
13951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013952 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013953 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013954 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013955 )
13956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013957 _res = z;
13958 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013959 p->error_indicator = 1;
13960 return NULL;
13961 }
13962 goto done;
13963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013964 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013966 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013967 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013968 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013969}
13970
Guido van Rossumc001c092020-04-30 12:12:19 -070013971// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013972static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013973_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013974{
13975 if (p->error_indicator) {
13976 return NULL;
13977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013978 void *_res = NULL;
13979 int _mark = p->mark;
13980 int _start_mark = p->mark;
13981 void **_children = PyMem_Malloc(sizeof(void *));
13982 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013983 p->error_indicator = 1;
13984 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013985 return NULL;
13986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013987 ssize_t _children_capacity = 1;
13988 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013989 { // ',' dotted_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013990 if (p->error_indicator) {
13991 return NULL;
13992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013993 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013994 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013995 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013996 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013997 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013998 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013999 )
14000 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014001 _res = elem;
14002 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014003 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014004 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014005 return NULL;
14006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014007 if (_n == _children_capacity) {
14008 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014009 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14010 if (!_new_children) {
14011 p->error_indicator = 1;
14012 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014013 return NULL;
14014 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014015 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014017 _children[_n++] = _res;
14018 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014020 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014022 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14023 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014024 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014025 p->error_indicator = 1;
14026 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014027 return NULL;
14028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014029 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14030 PyMem_Free(_children);
14031 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
14032 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014033}
14034
Guido van Rossumc001c092020-04-30 12:12:19 -070014035// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014036static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014037_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014038{
14039 if (p->error_indicator) {
14040 return NULL;
14041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014042 asdl_seq * _res = NULL;
14043 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014044 { // dotted_as_name _loop0_36
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014045 if (p->error_indicator) {
14046 return NULL;
14047 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014048 alias_ty elem;
14049 asdl_seq * seq;
14050 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014051 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014052 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014053 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014054 )
14055 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014056 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014057 goto done;
14058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014059 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014061 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014062 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014063 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014064}
14065
Guido van Rossumc001c092020-04-30 12:12:19 -070014066// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014067static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070014068_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014069{
14070 if (p->error_indicator) {
14071 return NULL;
14072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014073 void * _res = NULL;
14074 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014075 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014076 if (p->error_indicator) {
14077 return NULL;
14078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014079 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014080 expr_ty z;
14081 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014082 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014083 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014084 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014085 )
14086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014087 _res = z;
14088 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014089 p->error_indicator = 1;
14090 return NULL;
14091 }
14092 goto done;
14093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014094 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014096 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014097 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014098 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014099}
14100
Guido van Rossumc001c092020-04-30 12:12:19 -070014101// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014102static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014103_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014104{
14105 if (p->error_indicator) {
14106 return NULL;
14107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014108 void *_res = NULL;
14109 int _mark = p->mark;
14110 int _start_mark = p->mark;
14111 void **_children = PyMem_Malloc(sizeof(void *));
14112 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014113 p->error_indicator = 1;
14114 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014115 return NULL;
14116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014117 ssize_t _children_capacity = 1;
14118 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014119 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014120 if (p->error_indicator) {
14121 return NULL;
14122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014123 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014124 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014125 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014126 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014127 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014128 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014129 )
14130 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014131 _res = elem;
14132 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014133 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014134 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014135 return NULL;
14136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014137 if (_n == _children_capacity) {
14138 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014139 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14140 if (!_new_children) {
14141 p->error_indicator = 1;
14142 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014143 return NULL;
14144 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014145 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014147 _children[_n++] = _res;
14148 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014152 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14153 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014154 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014155 p->error_indicator = 1;
14156 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014157 return NULL;
14158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014159 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14160 PyMem_Free(_children);
14161 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
14162 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014163}
14164
Guido van Rossumc001c092020-04-30 12:12:19 -070014165// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014166static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014167_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014168{
14169 if (p->error_indicator) {
14170 return NULL;
14171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014172 asdl_seq * _res = NULL;
14173 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014174 { // with_item _loop0_39
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014175 if (p->error_indicator) {
14176 return NULL;
14177 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014178 withitem_ty elem;
14179 asdl_seq * seq;
14180 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014181 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014182 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014183 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014184 )
14185 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014186 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014187 goto done;
14188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014189 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014191 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014192 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014193 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014194}
14195
Guido van Rossumc001c092020-04-30 12:12:19 -070014196// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014197static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014198_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014199{
14200 if (p->error_indicator) {
14201 return NULL;
14202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014203 void *_res = NULL;
14204 int _mark = p->mark;
14205 int _start_mark = p->mark;
14206 void **_children = PyMem_Malloc(sizeof(void *));
14207 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014208 p->error_indicator = 1;
14209 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014210 return NULL;
14211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 ssize_t _children_capacity = 1;
14213 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014214 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014215 if (p->error_indicator) {
14216 return NULL;
14217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014218 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014219 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014220 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014221 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014222 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014223 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014224 )
14225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014226 _res = elem;
14227 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014228 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014229 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014230 return NULL;
14231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014232 if (_n == _children_capacity) {
14233 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014234 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14235 if (!_new_children) {
14236 p->error_indicator = 1;
14237 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014238 return NULL;
14239 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014240 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014242 _children[_n++] = _res;
14243 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014245 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014247 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14248 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014249 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014250 p->error_indicator = 1;
14251 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014252 return NULL;
14253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014254 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14255 PyMem_Free(_children);
14256 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
14257 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014258}
14259
Guido van Rossumc001c092020-04-30 12:12:19 -070014260// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014261static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014262_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014263{
14264 if (p->error_indicator) {
14265 return NULL;
14266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014267 asdl_seq * _res = NULL;
14268 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014269 { // with_item _loop0_41
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014270 if (p->error_indicator) {
14271 return NULL;
14272 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014273 withitem_ty elem;
14274 asdl_seq * seq;
14275 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014276 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014277 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014278 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014279 )
14280 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014281 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014282 goto done;
14283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014284 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014286 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014287 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014288 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014289}
14290
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014291// _loop0_43: ',' with_item
14292static asdl_seq *
14293_loop0_43_rule(Parser *p)
14294{
14295 if (p->error_indicator) {
14296 return NULL;
14297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014298 void *_res = NULL;
14299 int _mark = p->mark;
14300 int _start_mark = p->mark;
14301 void **_children = PyMem_Malloc(sizeof(void *));
14302 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014303 p->error_indicator = 1;
14304 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014305 return NULL;
14306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014307 ssize_t _children_capacity = 1;
14308 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014309 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014310 if (p->error_indicator) {
14311 return NULL;
14312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014313 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014314 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014315 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014316 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014318 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014319 )
14320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014321 _res = elem;
14322 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014323 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014324 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014325 return NULL;
14326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014327 if (_n == _children_capacity) {
14328 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014329 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14330 if (!_new_children) {
14331 p->error_indicator = 1;
14332 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014333 return NULL;
14334 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014335 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014337 _children[_n++] = _res;
14338 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014340 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014342 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14343 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014344 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014345 p->error_indicator = 1;
14346 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014347 return NULL;
14348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014349 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14350 PyMem_Free(_children);
14351 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
14352 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014353}
14354
14355// _gather_42: with_item _loop0_43
14356static asdl_seq *
14357_gather_42_rule(Parser *p)
14358{
14359 if (p->error_indicator) {
14360 return NULL;
14361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014362 asdl_seq * _res = NULL;
14363 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014364 { // with_item _loop0_43
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014365 if (p->error_indicator) {
14366 return NULL;
14367 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014368 withitem_ty elem;
14369 asdl_seq * seq;
14370 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014371 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014373 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014374 )
14375 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014376 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014377 goto done;
14378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014379 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014381 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014382 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014383 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014384}
14385
14386// _loop0_45: ',' with_item
14387static asdl_seq *
14388_loop0_45_rule(Parser *p)
14389{
14390 if (p->error_indicator) {
14391 return NULL;
14392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014393 void *_res = NULL;
14394 int _mark = p->mark;
14395 int _start_mark = p->mark;
14396 void **_children = PyMem_Malloc(sizeof(void *));
14397 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014398 p->error_indicator = 1;
14399 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014400 return NULL;
14401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014402 ssize_t _children_capacity = 1;
14403 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014404 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014405 if (p->error_indicator) {
14406 return NULL;
14407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014408 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014409 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014410 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014411 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014412 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014413 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014414 )
14415 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014416 _res = elem;
14417 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014418 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014419 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014420 return NULL;
14421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014422 if (_n == _children_capacity) {
14423 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014424 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14425 if (!_new_children) {
14426 p->error_indicator = 1;
14427 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014428 return NULL;
14429 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014430 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014432 _children[_n++] = _res;
14433 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014435 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014437 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14438 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014439 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014440 p->error_indicator = 1;
14441 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014442 return NULL;
14443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014444 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14445 PyMem_Free(_children);
14446 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
14447 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014448}
14449
14450// _gather_44: with_item _loop0_45
14451static asdl_seq *
14452_gather_44_rule(Parser *p)
14453{
14454 if (p->error_indicator) {
14455 return NULL;
14456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014457 asdl_seq * _res = NULL;
14458 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014459 { // with_item _loop0_45
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014460 if (p->error_indicator) {
14461 return NULL;
14462 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014463 withitem_ty elem;
14464 asdl_seq * seq;
14465 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014466 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014467 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014468 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014469 )
14470 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014471 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014472 goto done;
14473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014474 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014476 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014477 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014478 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014479}
14480
14481// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014482static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014483_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014484{
14485 if (p->error_indicator) {
14486 return NULL;
14487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014488 void * _res = NULL;
14489 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014490 { // 'as' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014491 if (p->error_indicator) {
14492 return NULL;
14493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014494 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014495 expr_ty t;
14496 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014497 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014498 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014499 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014500 )
14501 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014502 _res = t;
14503 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014504 p->error_indicator = 1;
14505 return NULL;
14506 }
14507 goto done;
14508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014509 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014511 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014512 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014513 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014514}
14515
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014516// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014517static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014518_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014519{
14520 if (p->error_indicator) {
14521 return NULL;
14522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014523 void *_res = NULL;
14524 int _mark = p->mark;
14525 int _start_mark = p->mark;
14526 void **_children = PyMem_Malloc(sizeof(void *));
14527 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014528 p->error_indicator = 1;
14529 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014530 return NULL;
14531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014532 ssize_t _children_capacity = 1;
14533 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014534 { // except_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014535 if (p->error_indicator) {
14536 return NULL;
14537 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014538 excepthandler_ty except_block_var;
14539 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014540 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014541 )
14542 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014543 _res = except_block_var;
14544 if (_n == _children_capacity) {
14545 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014546 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14547 if (!_new_children) {
14548 p->error_indicator = 1;
14549 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014550 return NULL;
14551 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014552 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014554 _children[_n++] = _res;
14555 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014557 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014559 if (_n == 0 || p->error_indicator) {
14560 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014561 return NULL;
14562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014563 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14564 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014565 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014566 p->error_indicator = 1;
14567 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014568 return NULL;
14569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014570 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14571 PyMem_Free(_children);
14572 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
14573 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014574}
14575
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014576// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014577static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014578_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014579{
14580 if (p->error_indicator) {
14581 return NULL;
14582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014583 void * _res = NULL;
14584 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014585 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014586 if (p->error_indicator) {
14587 return NULL;
14588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014589 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014590 expr_ty z;
14591 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014592 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014593 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014594 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014595 )
14596 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014597 _res = z;
14598 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014599 p->error_indicator = 1;
14600 return NULL;
14601 }
14602 goto done;
14603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014604 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014606 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014607 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014608 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014609}
14610
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014611// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014612static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014613_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014614{
14615 if (p->error_indicator) {
14616 return NULL;
14617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014618 void * _res = NULL;
14619 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014620 { // 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014621 if (p->error_indicator) {
14622 return NULL;
14623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014624 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014625 expr_ty z;
14626 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014627 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014628 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014629 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014630 )
14631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014632 _res = z;
14633 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014634 p->error_indicator = 1;
14635 return NULL;
14636 }
14637 goto done;
14638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014639 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014641 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014642 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014643 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014644}
14645
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014646// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014647static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014648_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014649{
14650 if (p->error_indicator) {
14651 return NULL;
14652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014653 void * _res = NULL;
14654 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014655 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014656 if (p->error_indicator) {
14657 return NULL;
14658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014659 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070014660 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014661 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014662 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014663 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014664 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014665 )
14666 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014667 _res = z;
14668 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014669 p->error_indicator = 1;
14670 return NULL;
14671 }
14672 goto done;
14673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014674 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014676 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014677 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014678 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014679}
14680
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014681// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070014682static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014683_tmp_51_rule(Parser *p)
14684{
14685 if (p->error_indicator) {
14686 return NULL;
14687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014688 void * _res = NULL;
14689 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014690 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014691 if (p->error_indicator) {
14692 return NULL;
14693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014694 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014695 expr_ty z;
14696 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014697 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014698 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014699 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014700 )
14701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014702 _res = z;
14703 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014704 p->error_indicator = 1;
14705 return NULL;
14706 }
14707 goto done;
14708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014709 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014711 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014712 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014713 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014714}
14715
14716// _tmp_52: NEWLINE INDENT
14717static void *
14718_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014719{
14720 if (p->error_indicator) {
14721 return NULL;
14722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014723 void * _res = NULL;
14724 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014725 { // NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014726 if (p->error_indicator) {
14727 return NULL;
14728 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010014729 Token * indent_var;
14730 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070014731 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014732 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070014733 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014734 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070014735 )
14736 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014737 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070014738 goto done;
14739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014740 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014742 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070014743 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014744 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070014745}
14746
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014747// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014748static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014749_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014750{
14751 if (p->error_indicator) {
14752 return NULL;
14753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014754 void *_res = NULL;
14755 int _mark = p->mark;
14756 int _start_mark = p->mark;
14757 void **_children = PyMem_Malloc(sizeof(void *));
14758 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014759 p->error_indicator = 1;
14760 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014761 return NULL;
14762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014763 ssize_t _children_capacity = 1;
14764 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014765 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014766 if (p->error_indicator) {
14767 return NULL;
14768 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014769 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014770 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014771 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014772 )
14773 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014774 _res = param_no_default_var;
14775 if (_n == _children_capacity) {
14776 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014777 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14778 if (!_new_children) {
14779 p->error_indicator = 1;
14780 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014781 return NULL;
14782 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014783 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014785 _children[_n++] = _res;
14786 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014788 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014790 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14791 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014792 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014793 p->error_indicator = 1;
14794 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014795 return NULL;
14796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014797 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14798 PyMem_Free(_children);
14799 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
14800 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014801}
14802
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014803// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014804static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014805_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014806{
14807 if (p->error_indicator) {
14808 return NULL;
14809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014810 void *_res = NULL;
14811 int _mark = p->mark;
14812 int _start_mark = p->mark;
14813 void **_children = PyMem_Malloc(sizeof(void *));
14814 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014815 p->error_indicator = 1;
14816 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014817 return NULL;
14818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014819 ssize_t _children_capacity = 1;
14820 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014821 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014822 if (p->error_indicator) {
14823 return NULL;
14824 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014825 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014826 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014827 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014828 )
14829 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014830 _res = param_with_default_var;
14831 if (_n == _children_capacity) {
14832 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014833 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14834 if (!_new_children) {
14835 p->error_indicator = 1;
14836 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014837 return NULL;
14838 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014839 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014841 _children[_n++] = _res;
14842 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014844 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014846 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14847 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014848 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014849 p->error_indicator = 1;
14850 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014851 return NULL;
14852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014853 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14854 PyMem_Free(_children);
14855 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
14856 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014857}
14858
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014859// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014860static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014861_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014862{
14863 if (p->error_indicator) {
14864 return NULL;
14865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014866 void *_res = NULL;
14867 int _mark = p->mark;
14868 int _start_mark = p->mark;
14869 void **_children = PyMem_Malloc(sizeof(void *));
14870 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014871 p->error_indicator = 1;
14872 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014873 return NULL;
14874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014875 ssize_t _children_capacity = 1;
14876 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014877 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014878 if (p->error_indicator) {
14879 return NULL;
14880 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014881 NameDefaultPair* param_with_default_var;
14882 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014883 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014884 )
14885 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014886 _res = param_with_default_var;
14887 if (_n == _children_capacity) {
14888 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014889 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14890 if (!_new_children) {
14891 p->error_indicator = 1;
14892 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014893 return NULL;
14894 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014895 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014897 _children[_n++] = _res;
14898 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014900 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014902 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14903 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014904 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014905 p->error_indicator = 1;
14906 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014907 return NULL;
14908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014909 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14910 PyMem_Free(_children);
14911 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
14912 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014913}
14914
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014915// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014916static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014917_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014918{
14919 if (p->error_indicator) {
14920 return NULL;
14921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014922 void *_res = NULL;
14923 int _mark = p->mark;
14924 int _start_mark = p->mark;
14925 void **_children = PyMem_Malloc(sizeof(void *));
14926 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014927 p->error_indicator = 1;
14928 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014929 return NULL;
14930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014931 ssize_t _children_capacity = 1;
14932 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014933 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014934 if (p->error_indicator) {
14935 return NULL;
14936 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014937 arg_ty param_no_default_var;
14938 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014939 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014940 )
14941 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014942 _res = param_no_default_var;
14943 if (_n == _children_capacity) {
14944 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014945 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14946 if (!_new_children) {
14947 p->error_indicator = 1;
14948 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014949 return NULL;
14950 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014951 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014953 _children[_n++] = _res;
14954 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014956 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014958 if (_n == 0 || p->error_indicator) {
14959 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014960 return NULL;
14961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014962 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14963 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014964 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014965 p->error_indicator = 1;
14966 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014967 return NULL;
14968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014969 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14970 PyMem_Free(_children);
14971 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
14972 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014973}
14974
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014975// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014976static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014977_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014978{
14979 if (p->error_indicator) {
14980 return NULL;
14981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014982 void *_res = NULL;
14983 int _mark = p->mark;
14984 int _start_mark = p->mark;
14985 void **_children = PyMem_Malloc(sizeof(void *));
14986 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014987 p->error_indicator = 1;
14988 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014989 return NULL;
14990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014991 ssize_t _children_capacity = 1;
14992 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014993 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014994 if (p->error_indicator) {
14995 return NULL;
14996 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014997 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014998 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014999 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015000 )
15001 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015002 _res = param_with_default_var;
15003 if (_n == _children_capacity) {
15004 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015005 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15006 if (!_new_children) {
15007 p->error_indicator = 1;
15008 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015009 return NULL;
15010 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015011 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015013 _children[_n++] = _res;
15014 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015016 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015018 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15019 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015020 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015021 p->error_indicator = 1;
15022 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015023 return NULL;
15024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015025 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15026 PyMem_Free(_children);
15027 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
15028 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015029}
15030
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015031// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015032static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015033_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015034{
15035 if (p->error_indicator) {
15036 return NULL;
15037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015038 void *_res = NULL;
15039 int _mark = p->mark;
15040 int _start_mark = p->mark;
15041 void **_children = PyMem_Malloc(sizeof(void *));
15042 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015043 p->error_indicator = 1;
15044 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015045 return NULL;
15046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015047 ssize_t _children_capacity = 1;
15048 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015049 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015050 if (p->error_indicator) {
15051 return NULL;
15052 }
Guido van Rossumc001c092020-04-30 12:12:19 -070015053 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015054 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015055 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015056 )
15057 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015058 _res = param_with_default_var;
15059 if (_n == _children_capacity) {
15060 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015061 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15062 if (!_new_children) {
15063 p->error_indicator = 1;
15064 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015065 return NULL;
15066 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015067 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015069 _children[_n++] = _res;
15070 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015072 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015074 if (_n == 0 || p->error_indicator) {
15075 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015076 return NULL;
15077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015078 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15079 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015080 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015081 p->error_indicator = 1;
15082 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015083 return NULL;
15084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015085 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15086 PyMem_Free(_children);
15087 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
15088 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015089}
15090
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015091// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015092static asdl_seq *
15093_loop1_59_rule(Parser *p)
15094{
15095 if (p->error_indicator) {
15096 return NULL;
15097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015098 void *_res = NULL;
15099 int _mark = p->mark;
15100 int _start_mark = p->mark;
15101 void **_children = PyMem_Malloc(sizeof(void *));
15102 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015103 p->error_indicator = 1;
15104 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015105 return NULL;
15106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015107 ssize_t _children_capacity = 1;
15108 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015109 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015110 if (p->error_indicator) {
15111 return NULL;
15112 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015113 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015114 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015115 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015116 )
15117 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015118 _res = param_no_default_var;
15119 if (_n == _children_capacity) {
15120 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015121 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15122 if (!_new_children) {
15123 p->error_indicator = 1;
15124 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015125 return NULL;
15126 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015127 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015129 _children[_n++] = _res;
15130 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015132 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015134 if (_n == 0 || p->error_indicator) {
15135 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015136 return NULL;
15137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015138 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15139 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015140 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015141 p->error_indicator = 1;
15142 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015143 return NULL;
15144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015145 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15146 PyMem_Free(_children);
15147 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
15148 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015149}
15150
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015151// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015152static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015153_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015154{
15155 if (p->error_indicator) {
15156 return NULL;
15157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015158 void *_res = NULL;
15159 int _mark = p->mark;
15160 int _start_mark = p->mark;
15161 void **_children = PyMem_Malloc(sizeof(void *));
15162 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015163 p->error_indicator = 1;
15164 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015165 return NULL;
15166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015167 ssize_t _children_capacity = 1;
15168 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015169 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015170 if (p->error_indicator) {
15171 return NULL;
15172 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015173 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015174 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015175 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015176 )
15177 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015178 _res = param_no_default_var;
15179 if (_n == _children_capacity) {
15180 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015181 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15182 if (!_new_children) {
15183 p->error_indicator = 1;
15184 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015185 return NULL;
15186 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015187 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015189 _children[_n++] = _res;
15190 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015192 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015194 if (_n == 0 || p->error_indicator) {
15195 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015196 return NULL;
15197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015198 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15199 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015200 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015201 p->error_indicator = 1;
15202 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015203 return NULL;
15204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015205 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15206 PyMem_Free(_children);
15207 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
15208 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015209}
15210
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015211// _loop0_61: param_no_default
15212static asdl_seq *
15213_loop0_61_rule(Parser *p)
15214{
15215 if (p->error_indicator) {
15216 return NULL;
15217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015218 void *_res = NULL;
15219 int _mark = p->mark;
15220 int _start_mark = p->mark;
15221 void **_children = PyMem_Malloc(sizeof(void *));
15222 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015223 p->error_indicator = 1;
15224 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015225 return NULL;
15226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015227 ssize_t _children_capacity = 1;
15228 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015229 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015230 if (p->error_indicator) {
15231 return NULL;
15232 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015233 arg_ty param_no_default_var;
15234 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015235 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015236 )
15237 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015238 _res = param_no_default_var;
15239 if (_n == _children_capacity) {
15240 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015241 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15242 if (!_new_children) {
15243 p->error_indicator = 1;
15244 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015245 return NULL;
15246 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015247 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015249 _children[_n++] = _res;
15250 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015252 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015254 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15255 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015256 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015257 p->error_indicator = 1;
15258 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015259 return NULL;
15260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015261 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15262 PyMem_Free(_children);
15263 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
15264 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015265}
15266
15267// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015268static asdl_seq *
15269_loop1_62_rule(Parser *p)
15270{
15271 if (p->error_indicator) {
15272 return NULL;
15273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015274 void *_res = NULL;
15275 int _mark = p->mark;
15276 int _start_mark = p->mark;
15277 void **_children = PyMem_Malloc(sizeof(void *));
15278 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015279 p->error_indicator = 1;
15280 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015281 return NULL;
15282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015283 ssize_t _children_capacity = 1;
15284 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015285 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015286 if (p->error_indicator) {
15287 return NULL;
15288 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015289 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015290 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015291 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015292 )
15293 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015294 _res = param_with_default_var;
15295 if (_n == _children_capacity) {
15296 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015297 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15298 if (!_new_children) {
15299 p->error_indicator = 1;
15300 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015301 return NULL;
15302 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015303 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015305 _children[_n++] = _res;
15306 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015308 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015310 if (_n == 0 || p->error_indicator) {
15311 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015312 return NULL;
15313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015314 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15315 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015316 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015317 p->error_indicator = 1;
15318 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015319 return NULL;
15320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015321 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15322 PyMem_Free(_children);
15323 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
15324 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015325}
15326
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015327// _loop0_63: param_no_default
15328static asdl_seq *
15329_loop0_63_rule(Parser *p)
15330{
15331 if (p->error_indicator) {
15332 return NULL;
15333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015334 void *_res = NULL;
15335 int _mark = p->mark;
15336 int _start_mark = p->mark;
15337 void **_children = PyMem_Malloc(sizeof(void *));
15338 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015339 p->error_indicator = 1;
15340 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015341 return NULL;
15342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015343 ssize_t _children_capacity = 1;
15344 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015345 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015346 if (p->error_indicator) {
15347 return NULL;
15348 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015349 arg_ty param_no_default_var;
15350 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015351 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015352 )
15353 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015354 _res = param_no_default_var;
15355 if (_n == _children_capacity) {
15356 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015357 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15358 if (!_new_children) {
15359 p->error_indicator = 1;
15360 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015361 return NULL;
15362 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015363 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015365 _children[_n++] = _res;
15366 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015368 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015370 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15371 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015372 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015373 p->error_indicator = 1;
15374 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015375 return NULL;
15376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015377 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15378 PyMem_Free(_children);
15379 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
15380 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015381}
15382
15383// _loop1_64: param_with_default
15384static asdl_seq *
15385_loop1_64_rule(Parser *p)
15386{
15387 if (p->error_indicator) {
15388 return NULL;
15389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015390 void *_res = NULL;
15391 int _mark = p->mark;
15392 int _start_mark = p->mark;
15393 void **_children = PyMem_Malloc(sizeof(void *));
15394 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015395 p->error_indicator = 1;
15396 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015397 return NULL;
15398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015399 ssize_t _children_capacity = 1;
15400 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015401 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015402 if (p->error_indicator) {
15403 return NULL;
15404 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015405 NameDefaultPair* param_with_default_var;
15406 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015407 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015408 )
15409 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015410 _res = param_with_default_var;
15411 if (_n == _children_capacity) {
15412 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015413 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15414 if (!_new_children) {
15415 p->error_indicator = 1;
15416 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015417 return NULL;
15418 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015419 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015421 _children[_n++] = _res;
15422 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015424 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015426 if (_n == 0 || p->error_indicator) {
15427 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015428 return NULL;
15429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015430 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15431 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015432 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015433 p->error_indicator = 1;
15434 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015435 return NULL;
15436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015437 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15438 PyMem_Free(_children);
15439 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
15440 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015441}
15442
15443// _loop0_65: param_maybe_default
15444static asdl_seq *
15445_loop0_65_rule(Parser *p)
15446{
15447 if (p->error_indicator) {
15448 return NULL;
15449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015450 void *_res = NULL;
15451 int _mark = p->mark;
15452 int _start_mark = p->mark;
15453 void **_children = PyMem_Malloc(sizeof(void *));
15454 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015455 p->error_indicator = 1;
15456 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015457 return NULL;
15458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015459 ssize_t _children_capacity = 1;
15460 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015461 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015462 if (p->error_indicator) {
15463 return NULL;
15464 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015465 NameDefaultPair* param_maybe_default_var;
15466 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015467 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015468 )
15469 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015470 _res = param_maybe_default_var;
15471 if (_n == _children_capacity) {
15472 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015473 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15474 if (!_new_children) {
15475 p->error_indicator = 1;
15476 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015477 return NULL;
15478 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015479 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015481 _children[_n++] = _res;
15482 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015484 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015486 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15487 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015488 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015489 p->error_indicator = 1;
15490 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015491 return NULL;
15492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015493 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15494 PyMem_Free(_children);
15495 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
15496 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015497}
15498
15499// _loop1_66: param_maybe_default
15500static asdl_seq *
15501_loop1_66_rule(Parser *p)
15502{
15503 if (p->error_indicator) {
15504 return NULL;
15505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015506 void *_res = NULL;
15507 int _mark = p->mark;
15508 int _start_mark = p->mark;
15509 void **_children = PyMem_Malloc(sizeof(void *));
15510 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015511 p->error_indicator = 1;
15512 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015513 return NULL;
15514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015515 ssize_t _children_capacity = 1;
15516 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015517 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015518 if (p->error_indicator) {
15519 return NULL;
15520 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015521 NameDefaultPair* param_maybe_default_var;
15522 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015523 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015524 )
15525 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015526 _res = param_maybe_default_var;
15527 if (_n == _children_capacity) {
15528 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015529 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15530 if (!_new_children) {
15531 p->error_indicator = 1;
15532 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015533 return NULL;
15534 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015535 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015537 _children[_n++] = _res;
15538 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015540 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015542 if (_n == 0 || p->error_indicator) {
15543 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015544 return NULL;
15545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015546 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15547 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015548 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015549 p->error_indicator = 1;
15550 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015551 return NULL;
15552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015553 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15554 PyMem_Free(_children);
15555 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
15556 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015557}
15558
15559// _loop1_67: ('@' named_expression NEWLINE)
15560static asdl_seq *
15561_loop1_67_rule(Parser *p)
15562{
15563 if (p->error_indicator) {
15564 return NULL;
15565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015566 void *_res = NULL;
15567 int _mark = p->mark;
15568 int _start_mark = p->mark;
15569 void **_children = PyMem_Malloc(sizeof(void *));
15570 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015571 p->error_indicator = 1;
15572 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015573 return NULL;
15574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015575 ssize_t _children_capacity = 1;
15576 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015577 { // ('@' named_expression NEWLINE)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015578 if (p->error_indicator) {
15579 return NULL;
15580 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015581 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015582 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015583 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015584 )
15585 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015586 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015587 if (_n == _children_capacity) {
15588 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015589 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15590 if (!_new_children) {
15591 p->error_indicator = 1;
15592 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015593 return NULL;
15594 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015595 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015597 _children[_n++] = _res;
15598 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015600 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015602 if (_n == 0 || p->error_indicator) {
15603 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015604 return NULL;
15605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015606 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15607 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015608 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015609 p->error_indicator = 1;
15610 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015611 return NULL;
15612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015613 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15614 PyMem_Free(_children);
15615 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
15616 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015617}
15618
15619// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015620static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015621_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015622{
15623 if (p->error_indicator) {
15624 return NULL;
15625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015626 void * _res = NULL;
15627 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015628 { // '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015629 if (p->error_indicator) {
15630 return NULL;
15631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015632 Token * _literal;
15633 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015634 void *z;
15635 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015636 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015637 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015638 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015639 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015640 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015641 )
15642 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015643 _res = z;
15644 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015645 p->error_indicator = 1;
15646 return NULL;
15647 }
15648 goto done;
15649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015650 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015652 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015653 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015654 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015655}
15656
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015657// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015658static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015659_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015660{
15661 if (p->error_indicator) {
15662 return NULL;
15663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015664 void *_res = NULL;
15665 int _mark = p->mark;
15666 int _start_mark = p->mark;
15667 void **_children = PyMem_Malloc(sizeof(void *));
15668 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015669 p->error_indicator = 1;
15670 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015671 return NULL;
15672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015673 ssize_t _children_capacity = 1;
15674 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015675 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015676 if (p->error_indicator) {
15677 return NULL;
15678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015679 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015680 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015681 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015682 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015683 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015684 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015685 )
15686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015687 _res = elem;
15688 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015689 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015690 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015691 return NULL;
15692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015693 if (_n == _children_capacity) {
15694 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015695 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15696 if (!_new_children) {
15697 p->error_indicator = 1;
15698 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015699 return NULL;
15700 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015701 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015703 _children[_n++] = _res;
15704 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015706 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015708 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15709 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015710 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015711 p->error_indicator = 1;
15712 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015713 return NULL;
15714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015715 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15716 PyMem_Free(_children);
15717 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
15718 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015719}
15720
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015721// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015722static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015723_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015724{
15725 if (p->error_indicator) {
15726 return NULL;
15727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015728 asdl_seq * _res = NULL;
15729 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015730 { // star_expression _loop0_70
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015731 if (p->error_indicator) {
15732 return NULL;
15733 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015734 expr_ty elem;
15735 asdl_seq * seq;
15736 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015737 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015738 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015739 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015740 )
15741 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015742 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015743 goto done;
15744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015745 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015747 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015748 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015749 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015750}
15751
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015752// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015753static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015754_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015755{
15756 if (p->error_indicator) {
15757 return NULL;
15758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015759 void *_res = NULL;
15760 int _mark = p->mark;
15761 int _start_mark = p->mark;
15762 void **_children = PyMem_Malloc(sizeof(void *));
15763 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015764 p->error_indicator = 1;
15765 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015766 return NULL;
15767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015768 ssize_t _children_capacity = 1;
15769 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015770 { // (',' star_expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015771 if (p->error_indicator) {
15772 return NULL;
15773 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015774 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015775 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015776 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015777 )
15778 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015779 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015780 if (_n == _children_capacity) {
15781 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015782 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15783 if (!_new_children) {
15784 p->error_indicator = 1;
15785 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015786 return NULL;
15787 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015788 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015790 _children[_n++] = _res;
15791 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015793 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015795 if (_n == 0 || p->error_indicator) {
15796 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015797 return NULL;
15798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015799 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15800 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015801 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015802 p->error_indicator = 1;
15803 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015804 return NULL;
15805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015806 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15807 PyMem_Free(_children);
15808 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
15809 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015810}
15811
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015812// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015813static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015814_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015815{
15816 if (p->error_indicator) {
15817 return NULL;
15818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015819 void *_res = NULL;
15820 int _mark = p->mark;
15821 int _start_mark = p->mark;
15822 void **_children = PyMem_Malloc(sizeof(void *));
15823 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015824 p->error_indicator = 1;
15825 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015826 return NULL;
15827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015828 ssize_t _children_capacity = 1;
15829 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015830 { // ',' star_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015831 if (p->error_indicator) {
15832 return NULL;
15833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015834 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015835 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015836 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015837 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015838 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015839 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015840 )
15841 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015842 _res = elem;
15843 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015844 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015845 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015846 return NULL;
15847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015848 if (_n == _children_capacity) {
15849 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015850 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15851 if (!_new_children) {
15852 p->error_indicator = 1;
15853 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015854 return NULL;
15855 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015856 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015858 _children[_n++] = _res;
15859 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015861 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015863 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15864 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015865 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015866 p->error_indicator = 1;
15867 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015868 return NULL;
15869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015870 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15871 PyMem_Free(_children);
15872 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
15873 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015874}
15875
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015876// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015877static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015878_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015879{
15880 if (p->error_indicator) {
15881 return NULL;
15882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015883 asdl_seq * _res = NULL;
15884 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015885 { // star_named_expression _loop0_73
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015886 if (p->error_indicator) {
15887 return NULL;
15888 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015889 expr_ty elem;
15890 asdl_seq * seq;
15891 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015892 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015893 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015894 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015895 )
15896 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015897 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015898 goto done;
15899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015900 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015902 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015903 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015904 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015905}
15906
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015907// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015908static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015909_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015910{
15911 if (p->error_indicator) {
15912 return NULL;
15913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015914 void *_res = NULL;
15915 int _mark = p->mark;
15916 int _start_mark = p->mark;
15917 void **_children = PyMem_Malloc(sizeof(void *));
15918 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015919 p->error_indicator = 1;
15920 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015921 return NULL;
15922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015923 ssize_t _children_capacity = 1;
15924 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015925 { // (',' expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015926 if (p->error_indicator) {
15927 return NULL;
15928 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015929 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015930 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015931 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015932 )
15933 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015934 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015935 if (_n == _children_capacity) {
15936 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015937 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15938 if (!_new_children) {
15939 p->error_indicator = 1;
15940 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015941 return NULL;
15942 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015943 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015945 _children[_n++] = _res;
15946 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015948 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015950 if (_n == 0 || p->error_indicator) {
15951 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015952 return NULL;
15953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015954 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15955 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015956 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015957 p->error_indicator = 1;
15958 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015959 return NULL;
15960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015961 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15962 PyMem_Free(_children);
15963 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
15964 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015965}
15966
Guido van Rossum3941d972020-05-01 09:42:03 -070015967// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015968static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015969_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015970{
15971 if (p->error_indicator) {
15972 return NULL;
15973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015974 void *_res = NULL;
15975 int _mark = p->mark;
15976 int _start_mark = p->mark;
15977 void **_children = PyMem_Malloc(sizeof(void *));
15978 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015979 p->error_indicator = 1;
15980 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015981 return NULL;
15982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015983 ssize_t _children_capacity = 1;
15984 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015985 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015986 if (p->error_indicator) {
15987 return NULL;
15988 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015989 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015990 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015991 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015992 )
15993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015994 _res = lambda_param_no_default_var;
15995 if (_n == _children_capacity) {
15996 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015997 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15998 if (!_new_children) {
15999 p->error_indicator = 1;
16000 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016001 return NULL;
16002 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016003 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016005 _children[_n++] = _res;
16006 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016008 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016010 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16011 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016012 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016013 p->error_indicator = 1;
16014 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016015 return NULL;
16016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016017 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16018 PyMem_Free(_children);
16019 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
16020 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016021}
16022
Guido van Rossum3941d972020-05-01 09:42:03 -070016023// _loop0_76: lambda_param_with_default
16024static asdl_seq *
16025_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016026{
16027 if (p->error_indicator) {
16028 return NULL;
16029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016030 void *_res = NULL;
16031 int _mark = p->mark;
16032 int _start_mark = p->mark;
16033 void **_children = PyMem_Malloc(sizeof(void *));
16034 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016035 p->error_indicator = 1;
16036 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016037 return NULL;
16038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016039 ssize_t _children_capacity = 1;
16040 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016041 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016042 if (p->error_indicator) {
16043 return NULL;
16044 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016045 NameDefaultPair* lambda_param_with_default_var;
16046 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016047 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016048 )
16049 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016050 _res = lambda_param_with_default_var;
16051 if (_n == _children_capacity) {
16052 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016053 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16054 if (!_new_children) {
16055 p->error_indicator = 1;
16056 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016057 return NULL;
16058 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016059 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016061 _children[_n++] = _res;
16062 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016064 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016066 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16067 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016068 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016069 p->error_indicator = 1;
16070 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016071 return NULL;
16072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016073 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16074 PyMem_Free(_children);
16075 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
16076 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016077}
16078
Guido van Rossum3941d972020-05-01 09:42:03 -070016079// _loop0_77: lambda_param_with_default
16080static asdl_seq *
16081_loop0_77_rule(Parser *p)
16082{
16083 if (p->error_indicator) {
16084 return NULL;
16085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016086 void *_res = NULL;
16087 int _mark = p->mark;
16088 int _start_mark = p->mark;
16089 void **_children = PyMem_Malloc(sizeof(void *));
16090 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016091 p->error_indicator = 1;
16092 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016093 return NULL;
16094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016095 ssize_t _children_capacity = 1;
16096 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016097 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016098 if (p->error_indicator) {
16099 return NULL;
16100 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016101 NameDefaultPair* lambda_param_with_default_var;
16102 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016103 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016104 )
16105 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016106 _res = lambda_param_with_default_var;
16107 if (_n == _children_capacity) {
16108 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016109 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16110 if (!_new_children) {
16111 p->error_indicator = 1;
16112 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016113 return NULL;
16114 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016115 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016117 _children[_n++] = _res;
16118 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016120 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016122 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16123 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016124 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016125 p->error_indicator = 1;
16126 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016127 return NULL;
16128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016129 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16130 PyMem_Free(_children);
16131 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
16132 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016133}
16134
16135// _loop1_78: lambda_param_no_default
16136static asdl_seq *
16137_loop1_78_rule(Parser *p)
16138{
16139 if (p->error_indicator) {
16140 return NULL;
16141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016142 void *_res = NULL;
16143 int _mark = p->mark;
16144 int _start_mark = p->mark;
16145 void **_children = PyMem_Malloc(sizeof(void *));
16146 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016147 p->error_indicator = 1;
16148 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016149 return NULL;
16150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016151 ssize_t _children_capacity = 1;
16152 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016153 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016154 if (p->error_indicator) {
16155 return NULL;
16156 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016157 arg_ty lambda_param_no_default_var;
16158 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016159 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016160 )
16161 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016162 _res = lambda_param_no_default_var;
16163 if (_n == _children_capacity) {
16164 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016165 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16166 if (!_new_children) {
16167 p->error_indicator = 1;
16168 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016169 return NULL;
16170 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016171 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016173 _children[_n++] = _res;
16174 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016176 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016178 if (_n == 0 || p->error_indicator) {
16179 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016180 return NULL;
16181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016182 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16183 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016184 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016185 p->error_indicator = 1;
16186 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016187 return NULL;
16188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016189 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16190 PyMem_Free(_children);
16191 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
16192 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016193}
16194
16195// _loop0_79: lambda_param_with_default
16196static asdl_seq *
16197_loop0_79_rule(Parser *p)
16198{
16199 if (p->error_indicator) {
16200 return NULL;
16201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016202 void *_res = NULL;
16203 int _mark = p->mark;
16204 int _start_mark = p->mark;
16205 void **_children = PyMem_Malloc(sizeof(void *));
16206 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016207 p->error_indicator = 1;
16208 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016209 return NULL;
16210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016211 ssize_t _children_capacity = 1;
16212 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016213 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016214 if (p->error_indicator) {
16215 return NULL;
16216 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016217 NameDefaultPair* lambda_param_with_default_var;
16218 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016219 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016220 )
16221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016222 _res = lambda_param_with_default_var;
16223 if (_n == _children_capacity) {
16224 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016225 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16226 if (!_new_children) {
16227 p->error_indicator = 1;
16228 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016229 return NULL;
16230 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016231 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016233 _children[_n++] = _res;
16234 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016236 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016238 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16239 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016240 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016241 p->error_indicator = 1;
16242 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016243 return NULL;
16244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016245 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16246 PyMem_Free(_children);
16247 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
16248 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016249}
16250
16251// _loop1_80: lambda_param_with_default
16252static asdl_seq *
16253_loop1_80_rule(Parser *p)
16254{
16255 if (p->error_indicator) {
16256 return NULL;
16257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016258 void *_res = NULL;
16259 int _mark = p->mark;
16260 int _start_mark = p->mark;
16261 void **_children = PyMem_Malloc(sizeof(void *));
16262 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016263 p->error_indicator = 1;
16264 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016265 return NULL;
16266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016267 ssize_t _children_capacity = 1;
16268 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016269 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016270 if (p->error_indicator) {
16271 return NULL;
16272 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016273 NameDefaultPair* lambda_param_with_default_var;
16274 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016275 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016276 )
16277 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016278 _res = lambda_param_with_default_var;
16279 if (_n == _children_capacity) {
16280 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016281 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16282 if (!_new_children) {
16283 p->error_indicator = 1;
16284 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016285 return NULL;
16286 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016287 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016289 _children[_n++] = _res;
16290 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016292 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016294 if (_n == 0 || p->error_indicator) {
16295 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016296 return NULL;
16297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016298 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16299 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016300 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016301 p->error_indicator = 1;
16302 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016303 return NULL;
16304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016305 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16306 PyMem_Free(_children);
16307 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
16308 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016309}
16310
16311// _loop1_81: lambda_param_no_default
16312static asdl_seq *
16313_loop1_81_rule(Parser *p)
16314{
16315 if (p->error_indicator) {
16316 return NULL;
16317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016318 void *_res = NULL;
16319 int _mark = p->mark;
16320 int _start_mark = p->mark;
16321 void **_children = PyMem_Malloc(sizeof(void *));
16322 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016323 p->error_indicator = 1;
16324 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016325 return NULL;
16326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016327 ssize_t _children_capacity = 1;
16328 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016329 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016330 if (p->error_indicator) {
16331 return NULL;
16332 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016333 arg_ty lambda_param_no_default_var;
16334 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016335 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016336 )
16337 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016338 _res = lambda_param_no_default_var;
16339 if (_n == _children_capacity) {
16340 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016341 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16342 if (!_new_children) {
16343 p->error_indicator = 1;
16344 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016345 return NULL;
16346 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016347 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016349 _children[_n++] = _res;
16350 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016352 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016354 if (_n == 0 || p->error_indicator) {
16355 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016356 return NULL;
16357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016358 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16359 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016360 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016361 p->error_indicator = 1;
16362 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016363 return NULL;
16364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016365 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16366 PyMem_Free(_children);
16367 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
16368 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016369}
16370
16371// _loop1_82: lambda_param_no_default
16372static asdl_seq *
16373_loop1_82_rule(Parser *p)
16374{
16375 if (p->error_indicator) {
16376 return NULL;
16377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016378 void *_res = NULL;
16379 int _mark = p->mark;
16380 int _start_mark = p->mark;
16381 void **_children = PyMem_Malloc(sizeof(void *));
16382 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016383 p->error_indicator = 1;
16384 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016385 return NULL;
16386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016387 ssize_t _children_capacity = 1;
16388 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016389 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016390 if (p->error_indicator) {
16391 return NULL;
16392 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016393 arg_ty lambda_param_no_default_var;
16394 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016395 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016396 )
16397 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016398 _res = lambda_param_no_default_var;
16399 if (_n == _children_capacity) {
16400 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016401 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16402 if (!_new_children) {
16403 p->error_indicator = 1;
16404 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016405 return NULL;
16406 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016407 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016409 _children[_n++] = _res;
16410 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016412 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016414 if (_n == 0 || p->error_indicator) {
16415 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016416 return NULL;
16417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016418 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16419 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016420 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016421 p->error_indicator = 1;
16422 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016423 return NULL;
16424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016425 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16426 PyMem_Free(_children);
16427 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
16428 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016429}
16430
16431// _loop0_83: lambda_param_no_default
16432static asdl_seq *
16433_loop0_83_rule(Parser *p)
16434{
16435 if (p->error_indicator) {
16436 return NULL;
16437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016438 void *_res = NULL;
16439 int _mark = p->mark;
16440 int _start_mark = p->mark;
16441 void **_children = PyMem_Malloc(sizeof(void *));
16442 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016443 p->error_indicator = 1;
16444 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016445 return NULL;
16446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016447 ssize_t _children_capacity = 1;
16448 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016449 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016450 if (p->error_indicator) {
16451 return NULL;
16452 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016453 arg_ty lambda_param_no_default_var;
16454 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016455 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016456 )
16457 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016458 _res = lambda_param_no_default_var;
16459 if (_n == _children_capacity) {
16460 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016461 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16462 if (!_new_children) {
16463 p->error_indicator = 1;
16464 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016465 return NULL;
16466 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016467 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016469 _children[_n++] = _res;
16470 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016472 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016474 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16475 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016476 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016477 p->error_indicator = 1;
16478 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016479 return NULL;
16480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016481 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16482 PyMem_Free(_children);
16483 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
16484 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016485}
16486
16487// _loop1_84: lambda_param_with_default
16488static asdl_seq *
16489_loop1_84_rule(Parser *p)
16490{
16491 if (p->error_indicator) {
16492 return NULL;
16493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016494 void *_res = NULL;
16495 int _mark = p->mark;
16496 int _start_mark = p->mark;
16497 void **_children = PyMem_Malloc(sizeof(void *));
16498 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016499 p->error_indicator = 1;
16500 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016501 return NULL;
16502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016503 ssize_t _children_capacity = 1;
16504 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016505 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016506 if (p->error_indicator) {
16507 return NULL;
16508 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016509 NameDefaultPair* lambda_param_with_default_var;
16510 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016511 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016512 )
16513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016514 _res = lambda_param_with_default_var;
16515 if (_n == _children_capacity) {
16516 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016517 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16518 if (!_new_children) {
16519 p->error_indicator = 1;
16520 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016521 return NULL;
16522 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016523 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016525 _children[_n++] = _res;
16526 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016528 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016530 if (_n == 0 || p->error_indicator) {
16531 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016532 return NULL;
16533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016534 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16535 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016536 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016537 p->error_indicator = 1;
16538 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016539 return NULL;
16540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016541 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16542 PyMem_Free(_children);
16543 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
16544 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016545}
16546
16547// _loop0_85: lambda_param_no_default
16548static asdl_seq *
16549_loop0_85_rule(Parser *p)
16550{
16551 if (p->error_indicator) {
16552 return NULL;
16553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016554 void *_res = NULL;
16555 int _mark = p->mark;
16556 int _start_mark = p->mark;
16557 void **_children = PyMem_Malloc(sizeof(void *));
16558 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016559 p->error_indicator = 1;
16560 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016561 return NULL;
16562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016563 ssize_t _children_capacity = 1;
16564 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016565 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016566 if (p->error_indicator) {
16567 return NULL;
16568 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016569 arg_ty lambda_param_no_default_var;
16570 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016571 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016572 )
16573 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016574 _res = lambda_param_no_default_var;
16575 if (_n == _children_capacity) {
16576 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016577 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16578 if (!_new_children) {
16579 p->error_indicator = 1;
16580 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016581 return NULL;
16582 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016583 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016585 _children[_n++] = _res;
16586 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016588 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016590 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16591 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016592 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016593 p->error_indicator = 1;
16594 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016595 return NULL;
16596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016597 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16598 PyMem_Free(_children);
16599 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
16600 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016601}
16602
16603// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016604static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016605_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016606{
16607 if (p->error_indicator) {
16608 return NULL;
16609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016610 void *_res = NULL;
16611 int _mark = p->mark;
16612 int _start_mark = p->mark;
16613 void **_children = PyMem_Malloc(sizeof(void *));
16614 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016615 p->error_indicator = 1;
16616 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016617 return NULL;
16618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016619 ssize_t _children_capacity = 1;
16620 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016621 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016622 if (p->error_indicator) {
16623 return NULL;
16624 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016625 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016626 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016627 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016628 )
16629 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016630 _res = lambda_param_with_default_var;
16631 if (_n == _children_capacity) {
16632 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016633 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16634 if (!_new_children) {
16635 p->error_indicator = 1;
16636 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016637 return NULL;
16638 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016639 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016641 _children[_n++] = _res;
16642 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016644 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016646 if (_n == 0 || p->error_indicator) {
16647 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016648 return NULL;
16649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016650 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16651 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016652 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016653 p->error_indicator = 1;
16654 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016655 return NULL;
16656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016657 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16658 PyMem_Free(_children);
16659 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
16660 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016661}
16662
Guido van Rossum3941d972020-05-01 09:42:03 -070016663// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016664static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016665_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016666{
16667 if (p->error_indicator) {
16668 return NULL;
16669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016670 void *_res = NULL;
16671 int _mark = p->mark;
16672 int _start_mark = p->mark;
16673 void **_children = PyMem_Malloc(sizeof(void *));
16674 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016675 p->error_indicator = 1;
16676 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016677 return NULL;
16678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016679 ssize_t _children_capacity = 1;
16680 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016681 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016682 if (p->error_indicator) {
16683 return NULL;
16684 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016685 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016686 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016687 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016688 )
16689 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016690 _res = lambda_param_maybe_default_var;
16691 if (_n == _children_capacity) {
16692 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016693 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16694 if (!_new_children) {
16695 p->error_indicator = 1;
16696 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016697 return NULL;
16698 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016699 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016701 _children[_n++] = _res;
16702 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016704 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016706 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16707 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016708 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016709 p->error_indicator = 1;
16710 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016711 return NULL;
16712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016713 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16714 PyMem_Free(_children);
16715 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
16716 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016717}
16718
Guido van Rossum3941d972020-05-01 09:42:03 -070016719// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016720static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016721_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016722{
16723 if (p->error_indicator) {
16724 return NULL;
16725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016726 void *_res = NULL;
16727 int _mark = p->mark;
16728 int _start_mark = p->mark;
16729 void **_children = PyMem_Malloc(sizeof(void *));
16730 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016731 p->error_indicator = 1;
16732 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016733 return NULL;
16734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016735 ssize_t _children_capacity = 1;
16736 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016737 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016738 if (p->error_indicator) {
16739 return NULL;
16740 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016741 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016742 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016743 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016744 )
16745 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016746 _res = lambda_param_maybe_default_var;
16747 if (_n == _children_capacity) {
16748 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016749 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16750 if (!_new_children) {
16751 p->error_indicator = 1;
16752 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016753 return NULL;
16754 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016755 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016757 _children[_n++] = _res;
16758 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016760 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016762 if (_n == 0 || p->error_indicator) {
16763 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016764 return NULL;
16765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016766 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16767 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016768 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016769 p->error_indicator = 1;
16770 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016771 return NULL;
16772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016773 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16774 PyMem_Free(_children);
16775 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
16776 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016777}
16778
Guido van Rossum3941d972020-05-01 09:42:03 -070016779// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016780static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016781_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016782{
16783 if (p->error_indicator) {
16784 return NULL;
16785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016786 void *_res = NULL;
16787 int _mark = p->mark;
16788 int _start_mark = p->mark;
16789 void **_children = PyMem_Malloc(sizeof(void *));
16790 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016791 p->error_indicator = 1;
16792 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016793 return NULL;
16794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016795 ssize_t _children_capacity = 1;
16796 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016797 { // ('or' conjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016798 if (p->error_indicator) {
16799 return NULL;
16800 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016801 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016802 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016803 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016804 )
16805 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016806 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016807 if (_n == _children_capacity) {
16808 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016809 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16810 if (!_new_children) {
16811 p->error_indicator = 1;
16812 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016813 return NULL;
16814 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016815 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016817 _children[_n++] = _res;
16818 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016820 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016822 if (_n == 0 || p->error_indicator) {
16823 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016824 return NULL;
16825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016826 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16827 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016828 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016829 p->error_indicator = 1;
16830 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016831 return NULL;
16832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016833 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16834 PyMem_Free(_children);
16835 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
16836 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016837}
16838
Guido van Rossum3941d972020-05-01 09:42:03 -070016839// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016840static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016841_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016842{
16843 if (p->error_indicator) {
16844 return NULL;
16845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016846 void *_res = NULL;
16847 int _mark = p->mark;
16848 int _start_mark = p->mark;
16849 void **_children = PyMem_Malloc(sizeof(void *));
16850 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016851 p->error_indicator = 1;
16852 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016853 return NULL;
16854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016855 ssize_t _children_capacity = 1;
16856 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016857 { // ('and' inversion)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016858 if (p->error_indicator) {
16859 return NULL;
16860 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016861 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016862 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016863 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016864 )
16865 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016866 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016867 if (_n == _children_capacity) {
16868 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016869 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16870 if (!_new_children) {
16871 p->error_indicator = 1;
16872 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016873 return NULL;
16874 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016875 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016877 _children[_n++] = _res;
16878 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016880 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016882 if (_n == 0 || p->error_indicator) {
16883 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016884 return NULL;
16885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016886 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16887 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016888 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016889 p->error_indicator = 1;
16890 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016891 return NULL;
16892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016893 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16894 PyMem_Free(_children);
16895 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
16896 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016897}
16898
Guido van Rossum3941d972020-05-01 09:42:03 -070016899// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016900static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016901_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016902{
16903 if (p->error_indicator) {
16904 return NULL;
16905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016906 void *_res = NULL;
16907 int _mark = p->mark;
16908 int _start_mark = p->mark;
16909 void **_children = PyMem_Malloc(sizeof(void *));
16910 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016911 p->error_indicator = 1;
16912 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016913 return NULL;
16914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016915 ssize_t _children_capacity = 1;
16916 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016917 { // compare_op_bitwise_or_pair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016918 if (p->error_indicator) {
16919 return NULL;
16920 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016921 CmpopExprPair* compare_op_bitwise_or_pair_var;
16922 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016923 (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 +010016924 )
16925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016926 _res = compare_op_bitwise_or_pair_var;
16927 if (_n == _children_capacity) {
16928 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016929 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16930 if (!_new_children) {
16931 p->error_indicator = 1;
16932 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016933 return NULL;
16934 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016935 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016937 _children[_n++] = _res;
16938 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016940 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016942 if (_n == 0 || p->error_indicator) {
16943 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016944 return NULL;
16945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016946 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16947 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016948 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016949 p->error_indicator = 1;
16950 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016951 return NULL;
16952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016953 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16954 PyMem_Free(_children);
16955 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
16956 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016957}
16958
Guido van Rossum3941d972020-05-01 09:42:03 -070016959// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010016960static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016961_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010016962{
16963 if (p->error_indicator) {
16964 return NULL;
16965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016966 void * _res = NULL;
16967 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016968 { // '!='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016969 if (p->error_indicator) {
16970 return NULL;
16971 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010016972 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016973 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016974 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010016975 )
16976 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016977 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
16978 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010016979 p->error_indicator = 1;
16980 return NULL;
16981 }
16982 goto done;
16983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016984 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016986 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016987 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016988 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016989}
16990
Guido van Rossum3941d972020-05-01 09:42:03 -070016991// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016992static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016993_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016994{
16995 if (p->error_indicator) {
16996 return NULL;
16997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016998 void *_res = NULL;
16999 int _mark = p->mark;
17000 int _start_mark = p->mark;
17001 void **_children = PyMem_Malloc(sizeof(void *));
17002 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017003 p->error_indicator = 1;
17004 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017005 return NULL;
17006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017007 ssize_t _children_capacity = 1;
17008 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017009 { // ',' slice
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017010 if (p->error_indicator) {
17011 return NULL;
17012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017013 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017014 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017015 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017016 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017017 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017018 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017019 )
17020 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017021 _res = elem;
17022 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017023 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017024 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017025 return NULL;
17026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017027 if (_n == _children_capacity) {
17028 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017029 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17030 if (!_new_children) {
17031 p->error_indicator = 1;
17032 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017033 return NULL;
17034 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017035 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017037 _children[_n++] = _res;
17038 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017040 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017042 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17043 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017044 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017045 p->error_indicator = 1;
17046 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017047 return NULL;
17048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017049 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17050 PyMem_Free(_children);
17051 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
17052 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017053}
17054
Guido van Rossum3941d972020-05-01 09:42:03 -070017055// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017056static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017057_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017058{
17059 if (p->error_indicator) {
17060 return NULL;
17061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017062 asdl_seq * _res = NULL;
17063 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017064 { // slice _loop0_94
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017065 if (p->error_indicator) {
17066 return NULL;
17067 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017068 expr_ty elem;
17069 asdl_seq * seq;
17070 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017071 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017072 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017073 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017074 )
17075 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017076 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017077 goto done;
17078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017079 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017081 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017082 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017083 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017084}
17085
Guido van Rossum3941d972020-05-01 09:42:03 -070017086// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017087static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017088_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017089{
17090 if (p->error_indicator) {
17091 return NULL;
17092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017093 void * _res = NULL;
17094 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017095 { // ':' expression?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017096 if (p->error_indicator) {
17097 return NULL;
17098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017099 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017100 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017101 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017102 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017103 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017104 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017105 )
17106 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017107 _res = d;
17108 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017109 p->error_indicator = 1;
17110 return NULL;
17111 }
17112 goto done;
17113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017114 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017116 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017117 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017118 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017119}
17120
Guido van Rossum3941d972020-05-01 09:42:03 -070017121// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017122static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017123_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017124{
17125 if (p->error_indicator) {
17126 return NULL;
17127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017128 void * _res = NULL;
17129 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017130 { // tuple
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017131 if (p->error_indicator) {
17132 return NULL;
17133 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017134 expr_ty tuple_var;
17135 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017136 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017137 )
17138 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017139 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017140 goto done;
17141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017142 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017143 }
17144 { // group
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017145 if (p->error_indicator) {
17146 return NULL;
17147 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017148 expr_ty group_var;
17149 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017150 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017151 )
17152 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017153 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017154 goto done;
17155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017156 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017157 }
17158 { // genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017159 if (p->error_indicator) {
17160 return NULL;
17161 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017162 expr_ty genexp_var;
17163 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017164 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017165 )
17166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017167 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017168 goto done;
17169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017170 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017172 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017173 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017174 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017175}
17176
Guido van Rossum3941d972020-05-01 09:42:03 -070017177// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017178static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017179_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017180{
17181 if (p->error_indicator) {
17182 return NULL;
17183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017184 void * _res = NULL;
17185 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017186 { // list
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017187 if (p->error_indicator) {
17188 return NULL;
17189 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017190 expr_ty list_var;
17191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017192 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017193 )
17194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017195 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017196 goto done;
17197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017198 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017199 }
17200 { // listcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017201 if (p->error_indicator) {
17202 return NULL;
17203 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017204 expr_ty listcomp_var;
17205 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017206 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017207 )
17208 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017209 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017210 goto done;
17211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017212 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017214 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017215 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017216 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017217}
17218
Guido van Rossum3941d972020-05-01 09:42:03 -070017219// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017220static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017221_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017222{
17223 if (p->error_indicator) {
17224 return NULL;
17225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017226 void * _res = NULL;
17227 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017228 { // dict
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017229 if (p->error_indicator) {
17230 return NULL;
17231 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017232 expr_ty dict_var;
17233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017234 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017235 )
17236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017237 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017238 goto done;
17239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017241 }
17242 { // set
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017243 if (p->error_indicator) {
17244 return NULL;
17245 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017246 expr_ty set_var;
17247 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017248 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017249 )
17250 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017251 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017252 goto done;
17253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017254 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017255 }
17256 { // dictcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017257 if (p->error_indicator) {
17258 return NULL;
17259 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017260 expr_ty dictcomp_var;
17261 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017262 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017263 )
17264 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017265 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017266 goto done;
17267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017268 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017269 }
17270 { // setcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017271 if (p->error_indicator) {
17272 return NULL;
17273 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017274 expr_ty setcomp_var;
17275 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017276 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017277 )
17278 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017279 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017280 goto done;
17281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017282 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017284 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017285 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017286 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017287}
17288
Guido van Rossum3941d972020-05-01 09:42:03 -070017289// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017290static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017291_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017292{
17293 if (p->error_indicator) {
17294 return NULL;
17295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017296 void *_res = NULL;
17297 int _mark = p->mark;
17298 int _start_mark = p->mark;
17299 void **_children = PyMem_Malloc(sizeof(void *));
17300 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017301 p->error_indicator = 1;
17302 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017303 return NULL;
17304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017305 ssize_t _children_capacity = 1;
17306 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017307 { // STRING
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017308 if (p->error_indicator) {
17309 return NULL;
17310 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017311 expr_ty string_var;
17312 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017313 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017314 )
17315 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017316 _res = string_var;
17317 if (_n == _children_capacity) {
17318 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017319 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17320 if (!_new_children) {
17321 p->error_indicator = 1;
17322 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017323 return NULL;
17324 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017325 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017327 _children[_n++] = _res;
17328 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017330 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017332 if (_n == 0 || p->error_indicator) {
17333 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017334 return NULL;
17335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017336 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17337 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017338 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017339 p->error_indicator = 1;
17340 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017341 return NULL;
17342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017343 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17344 PyMem_Free(_children);
17345 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
17346 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017347}
17348
Guido van Rossum3941d972020-05-01 09:42:03 -070017349// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017350static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017351_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017352{
17353 if (p->error_indicator) {
17354 return NULL;
17355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017356 void * _res = NULL;
17357 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017358 { // star_named_expression ',' star_named_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017359 if (p->error_indicator) {
17360 return NULL;
17361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017362 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017363 expr_ty y;
17364 void *z;
17365 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017366 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017367 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017368 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017369 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017370 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017371 )
17372 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017373 _res = _PyPegen_seq_insert_in_front ( p , y , z );
17374 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017375 p->error_indicator = 1;
17376 return NULL;
17377 }
17378 goto done;
17379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017380 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017382 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017383 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017384 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017385}
17386
Guido van Rossum3941d972020-05-01 09:42:03 -070017387// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017388static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017389_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017390{
17391 if (p->error_indicator) {
17392 return NULL;
17393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017394 void * _res = NULL;
17395 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017396 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017397 if (p->error_indicator) {
17398 return NULL;
17399 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017400 expr_ty yield_expr_var;
17401 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017402 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017403 )
17404 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017405 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017406 goto done;
17407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017408 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017409 }
17410 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017411 if (p->error_indicator) {
17412 return NULL;
17413 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017414 expr_ty named_expression_var;
17415 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017416 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017417 )
17418 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017419 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017420 goto done;
17421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017422 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017424 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017425 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017426 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017427}
17428
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017429// _loop0_103: ',' double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017430static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017431_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017432{
17433 if (p->error_indicator) {
17434 return NULL;
17435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017436 void *_res = NULL;
17437 int _mark = p->mark;
17438 int _start_mark = p->mark;
17439 void **_children = PyMem_Malloc(sizeof(void *));
17440 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017441 p->error_indicator = 1;
17442 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017443 return NULL;
17444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017445 ssize_t _children_capacity = 1;
17446 ssize_t _n = 0;
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017447 { // ',' double_starred_kvpair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017448 if (p->error_indicator) {
17449 return NULL;
17450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017451 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017452 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017453 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017454 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017455 &&
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017456 (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017457 )
17458 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017459 _res = elem;
17460 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017461 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017462 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017463 return NULL;
17464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017465 if (_n == _children_capacity) {
17466 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017467 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17468 if (!_new_children) {
17469 p->error_indicator = 1;
17470 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017471 return NULL;
17472 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017473 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017475 _children[_n++] = _res;
17476 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017478 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017480 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17481 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017482 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017483 p->error_indicator = 1;
17484 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017485 return NULL;
17486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017487 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17488 PyMem_Free(_children);
17489 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
17490 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017491}
17492
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017493// _gather_102: double_starred_kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017494static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017495_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017496{
17497 if (p->error_indicator) {
17498 return NULL;
17499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017500 asdl_seq * _res = NULL;
17501 int _mark = p->mark;
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017502 { // double_starred_kvpair _loop0_103
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017503 if (p->error_indicator) {
17504 return NULL;
17505 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017506 KeyValuePair* elem;
17507 asdl_seq * seq;
17508 if (
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017509 (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017510 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017511 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017512 )
17513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017514 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017515 goto done;
17516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017517 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017519 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017520 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017521 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017522}
17523
Guido van Rossum3941d972020-05-01 09:42:03 -070017524// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017525static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017526_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017527{
17528 if (p->error_indicator) {
17529 return NULL;
17530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017531 void *_res = NULL;
17532 int _mark = p->mark;
17533 int _start_mark = p->mark;
17534 void **_children = PyMem_Malloc(sizeof(void *));
17535 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017536 p->error_indicator = 1;
17537 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017538 return NULL;
17539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017540 ssize_t _children_capacity = 1;
17541 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017542 { // for_if_clause
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017543 if (p->error_indicator) {
17544 return NULL;
17545 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017546 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017547 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017548 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017549 )
17550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017551 _res = for_if_clause_var;
17552 if (_n == _children_capacity) {
17553 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017554 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17555 if (!_new_children) {
17556 p->error_indicator = 1;
17557 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017558 return NULL;
17559 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017560 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017562 _children[_n++] = _res;
17563 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017565 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017567 if (_n == 0 || p->error_indicator) {
17568 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017569 return NULL;
17570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017571 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17572 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017573 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017574 p->error_indicator = 1;
17575 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017576 return NULL;
17577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017578 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17579 PyMem_Free(_children);
17580 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
17581 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017582}
17583
Guido van Rossum3941d972020-05-01 09:42:03 -070017584// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017585static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017586_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017587{
17588 if (p->error_indicator) {
17589 return NULL;
17590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017591 void *_res = NULL;
17592 int _mark = p->mark;
17593 int _start_mark = p->mark;
17594 void **_children = PyMem_Malloc(sizeof(void *));
17595 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017596 p->error_indicator = 1;
17597 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017598 return NULL;
17599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017600 ssize_t _children_capacity = 1;
17601 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017602 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017603 if (p->error_indicator) {
17604 return NULL;
17605 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017606 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017607 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017608 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010017609 )
17610 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017611 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017612 if (_n == _children_capacity) {
17613 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017614 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17615 if (!_new_children) {
17616 p->error_indicator = 1;
17617 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017618 return NULL;
17619 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017620 _children = _new_children;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017622 _children[_n++] = _res;
17623 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017625 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017627 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17628 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017629 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017630 p->error_indicator = 1;
17631 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017632 return NULL;
17633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017634 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17635 PyMem_Free(_children);
17636 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
17637 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017638}
17639
Guido van Rossum3941d972020-05-01 09:42:03 -070017640// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070017641static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017642_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017643{
17644 if (p->error_indicator) {
17645 return NULL;
17646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017647 void *_res = NULL;
17648 int _mark = p->mark;
17649 int _start_mark = p->mark;
17650 void **_children = PyMem_Malloc(sizeof(void *));
17651 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017652 p->error_indicator = 1;
17653 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017654 return NULL;
17655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017656 ssize_t _children_capacity = 1;
17657 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017658 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017659 if (p->error_indicator) {
17660 return NULL;
17661 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017662 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017663 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017664 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070017665 )
17666 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017667 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017668 if (_n == _children_capacity) {
17669 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017670 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17671 if (!_new_children) {
17672 p->error_indicator = 1;
17673 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017674 return NULL;
17675 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017676 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017678 _children[_n++] = _res;
17679 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017681 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017683 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17684 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017685 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017686 p->error_indicator = 1;
17687 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017688 return NULL;
17689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017690 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17691 PyMem_Free(_children);
17692 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
17693 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017694}
17695
Guido van Rossum3941d972020-05-01 09:42:03 -070017696// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017697static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017698_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017699{
17700 if (p->error_indicator) {
17701 return NULL;
17702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017703 void * _res = NULL;
17704 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017705 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017706 if (p->error_indicator) {
17707 return NULL;
17708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017709 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017710 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017711 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017712 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017713 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017714 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017715 )
17716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017717 _res = c;
17718 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017719 p->error_indicator = 1;
17720 return NULL;
17721 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017722 goto done;
17723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017724 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017726 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017727 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017728 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017729}
17730
Guido van Rossum3941d972020-05-01 09:42:03 -070017731// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017732static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017733_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017734{
17735 if (p->error_indicator) {
17736 return NULL;
17737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017738 void * _res = NULL;
17739 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017740 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017741 if (p->error_indicator) {
17742 return NULL;
17743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017744 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017745 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017746 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017747 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017748 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017749 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017750 )
17751 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017752 _res = c;
17753 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017754 p->error_indicator = 1;
17755 return NULL;
17756 }
17757 goto done;
17758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017759 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017761 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017762 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017763 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017764}
17765
Guido van Rossum3941d972020-05-01 09:42:03 -070017766// _loop0_110: ',' kwarg_or_starred
17767static asdl_seq *
17768_loop0_110_rule(Parser *p)
17769{
17770 if (p->error_indicator) {
17771 return NULL;
17772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017773 void *_res = NULL;
17774 int _mark = p->mark;
17775 int _start_mark = p->mark;
17776 void **_children = PyMem_Malloc(sizeof(void *));
17777 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017778 p->error_indicator = 1;
17779 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017780 return NULL;
17781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017782 ssize_t _children_capacity = 1;
17783 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017784 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017785 if (p->error_indicator) {
17786 return NULL;
17787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017788 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017789 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017790 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017791 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017792 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017793 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017794 )
17795 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017796 _res = elem;
17797 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017798 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017799 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017800 return NULL;
17801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017802 if (_n == _children_capacity) {
17803 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017804 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17805 if (!_new_children) {
17806 p->error_indicator = 1;
17807 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017808 return NULL;
17809 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017810 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017812 _children[_n++] = _res;
17813 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017815 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017817 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17818 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017819 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017820 p->error_indicator = 1;
17821 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017822 return NULL;
17823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017824 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17825 PyMem_Free(_children);
17826 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
17827 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017828}
17829
17830// _gather_109: kwarg_or_starred _loop0_110
17831static asdl_seq *
17832_gather_109_rule(Parser *p)
17833{
17834 if (p->error_indicator) {
17835 return NULL;
17836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017837 asdl_seq * _res = NULL;
17838 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017839 { // kwarg_or_starred _loop0_110
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017840 if (p->error_indicator) {
17841 return NULL;
17842 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017843 KeywordOrStarred* elem;
17844 asdl_seq * seq;
17845 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017846 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017847 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017848 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070017849 )
17850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017851 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017852 goto done;
17853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017854 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017856 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017857 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017858 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017859}
17860
17861// _loop0_112: ',' kwarg_or_double_starred
17862static asdl_seq *
17863_loop0_112_rule(Parser *p)
17864{
17865 if (p->error_indicator) {
17866 return NULL;
17867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017868 void *_res = NULL;
17869 int _mark = p->mark;
17870 int _start_mark = p->mark;
17871 void **_children = PyMem_Malloc(sizeof(void *));
17872 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017873 p->error_indicator = 1;
17874 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017875 return NULL;
17876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017877 ssize_t _children_capacity = 1;
17878 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017879 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017880 if (p->error_indicator) {
17881 return NULL;
17882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017883 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017884 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017885 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017886 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017887 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017888 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017889 )
17890 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017891 _res = elem;
17892 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017893 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017894 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017895 return NULL;
17896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017897 if (_n == _children_capacity) {
17898 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017899 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17900 if (!_new_children) {
17901 p->error_indicator = 1;
17902 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017903 return NULL;
17904 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017905 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017907 _children[_n++] = _res;
17908 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017910 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017912 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17913 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017914 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017915 p->error_indicator = 1;
17916 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017917 return NULL;
17918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017919 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17920 PyMem_Free(_children);
17921 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
17922 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017923}
17924
17925// _gather_111: kwarg_or_double_starred _loop0_112
17926static asdl_seq *
17927_gather_111_rule(Parser *p)
17928{
17929 if (p->error_indicator) {
17930 return NULL;
17931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017932 asdl_seq * _res = NULL;
17933 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017934 { // kwarg_or_double_starred _loop0_112
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017935 if (p->error_indicator) {
17936 return NULL;
17937 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017938 KeywordOrStarred* elem;
17939 asdl_seq * seq;
17940 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017941 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017942 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017943 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070017944 )
17945 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017946 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017947 goto done;
17948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017949 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017951 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017952 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017953 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017954}
17955
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017956// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010017957static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017958_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017959{
17960 if (p->error_indicator) {
17961 return NULL;
17962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017963 void *_res = NULL;
17964 int _mark = p->mark;
17965 int _start_mark = p->mark;
17966 void **_children = PyMem_Malloc(sizeof(void *));
17967 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017968 p->error_indicator = 1;
17969 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017970 return NULL;
17971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017972 ssize_t _children_capacity = 1;
17973 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017974 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017975 if (p->error_indicator) {
17976 return NULL;
17977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017978 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070017979 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070017980 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017981 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070017982 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017983 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017984 )
17985 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017986 _res = elem;
17987 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017988 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017989 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017990 return NULL;
17991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017992 if (_n == _children_capacity) {
17993 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017994 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17995 if (!_new_children) {
17996 p->error_indicator = 1;
17997 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017998 return NULL;
17999 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018000 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018002 _children[_n++] = _res;
18003 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018005 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018007 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18008 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018009 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018010 p->error_indicator = 1;
18011 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018012 return NULL;
18013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018014 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18015 PyMem_Free(_children);
18016 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
18017 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018018}
18019
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018020// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070018021static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018022_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018023{
18024 if (p->error_indicator) {
18025 return NULL;
18026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018027 asdl_seq * _res = NULL;
18028 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018029 { // kwarg_or_starred _loop0_114
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018030 if (p->error_indicator) {
18031 return NULL;
18032 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018033 KeywordOrStarred* elem;
18034 asdl_seq * seq;
18035 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018036 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018037 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018038 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070018039 )
18040 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018041 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070018042 goto done;
18043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018044 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018046 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070018047 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018048 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070018049}
18050
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018051// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018052static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018053_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018054{
18055 if (p->error_indicator) {
18056 return NULL;
18057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018058 void *_res = NULL;
18059 int _mark = p->mark;
18060 int _start_mark = p->mark;
18061 void **_children = PyMem_Malloc(sizeof(void *));
18062 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018063 p->error_indicator = 1;
18064 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018065 return NULL;
18066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018067 ssize_t _children_capacity = 1;
18068 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018069 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018070 if (p->error_indicator) {
18071 return NULL;
18072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018073 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070018074 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070018075 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018076 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070018077 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018078 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018079 )
18080 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018081 _res = elem;
18082 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070018083 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018084 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070018085 return NULL;
18086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018087 if (_n == _children_capacity) {
18088 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018089 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18090 if (!_new_children) {
18091 p->error_indicator = 1;
18092 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018093 return NULL;
18094 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018095 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018097 _children[_n++] = _res;
18098 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018100 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018102 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18103 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018104 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018105 p->error_indicator = 1;
18106 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018107 return NULL;
18108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018109 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18110 PyMem_Free(_children);
18111 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
18112 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018113}
18114
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018115// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070018116static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018117_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018118{
18119 if (p->error_indicator) {
18120 return NULL;
18121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018122 asdl_seq * _res = NULL;
18123 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018124 { // kwarg_or_double_starred _loop0_116
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018125 if (p->error_indicator) {
18126 return NULL;
18127 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018128 KeywordOrStarred* elem;
18129 asdl_seq * seq;
18130 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018131 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018132 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018133 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070018134 )
18135 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018136 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070018137 goto done;
18138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018139 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018141 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070018142 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018143 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070018144}
18145
Guido van Rossum3941d972020-05-01 09:42:03 -070018146// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070018147static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018148_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018149{
18150 if (p->error_indicator) {
18151 return NULL;
18152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018153 void *_res = NULL;
18154 int _mark = p->mark;
18155 int _start_mark = p->mark;
18156 void **_children = PyMem_Malloc(sizeof(void *));
18157 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018158 p->error_indicator = 1;
18159 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018160 return NULL;
18161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018162 ssize_t _children_capacity = 1;
18163 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018164 { // (',' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018165 if (p->error_indicator) {
18166 return NULL;
18167 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018168 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018169 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018170 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018171 )
18172 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018173 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018174 if (_n == _children_capacity) {
18175 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018176 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18177 if (!_new_children) {
18178 p->error_indicator = 1;
18179 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018180 return NULL;
18181 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018182 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018184 _children[_n++] = _res;
18185 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018187 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018189 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18190 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018191 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018192 p->error_indicator = 1;
18193 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018194 return NULL;
18195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018196 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18197 PyMem_Free(_children);
18198 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
18199 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018200}
18201
Guido van Rossum3941d972020-05-01 09:42:03 -070018202// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018203static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018204_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018205{
18206 if (p->error_indicator) {
18207 return NULL;
18208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018209 void *_res = NULL;
18210 int _mark = p->mark;
18211 int _start_mark = p->mark;
18212 void **_children = PyMem_Malloc(sizeof(void *));
18213 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018214 p->error_indicator = 1;
18215 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018216 return NULL;
18217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018218 ssize_t _children_capacity = 1;
18219 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018220 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018221 if (p->error_indicator) {
18222 return NULL;
18223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018224 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018225 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018226 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018227 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018228 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018229 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018230 )
18231 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018232 _res = elem;
18233 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018234 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018235 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018236 return NULL;
18237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018238 if (_n == _children_capacity) {
18239 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018240 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18241 if (!_new_children) {
18242 p->error_indicator = 1;
18243 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018244 return NULL;
18245 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018246 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018248 _children[_n++] = _res;
18249 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018253 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18254 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018255 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018256 p->error_indicator = 1;
18257 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018258 return NULL;
18259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018260 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18261 PyMem_Free(_children);
18262 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
18263 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018264}
18265
Guido van Rossum3941d972020-05-01 09:42:03 -070018266// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018267static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018268_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018269{
18270 if (p->error_indicator) {
18271 return NULL;
18272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018273 asdl_seq * _res = NULL;
18274 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018275 { // star_target _loop0_119
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018276 if (p->error_indicator) {
18277 return NULL;
18278 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018279 expr_ty elem;
18280 asdl_seq * seq;
18281 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018282 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018284 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018285 )
18286 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018287 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018288 goto done;
18289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018292 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018293 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018295}
18296
Guido van Rossum3941d972020-05-01 09:42:03 -070018297// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018298static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018299_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018300{
18301 if (p->error_indicator) {
18302 return NULL;
18303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018304 void * _res = NULL;
18305 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018306 { // !'*' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018307 if (p->error_indicator) {
18308 return NULL;
18309 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018310 expr_ty star_target_var;
18311 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018312 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018314 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018315 )
18316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018317 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018318 goto done;
18319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018320 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018322 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018323 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018324 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018325}
18326
Guido van Rossum3941d972020-05-01 09:42:03 -070018327// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018328static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018329_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018330{
18331 if (p->error_indicator) {
18332 return NULL;
18333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018334 void *_res = NULL;
18335 int _mark = p->mark;
18336 int _start_mark = p->mark;
18337 void **_children = PyMem_Malloc(sizeof(void *));
18338 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018339 p->error_indicator = 1;
18340 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018341 return NULL;
18342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018343 ssize_t _children_capacity = 1;
18344 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018345 { // ',' del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018346 if (p->error_indicator) {
18347 return NULL;
18348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018349 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018350 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018351 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018352 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018354 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018355 )
18356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018357 _res = elem;
18358 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018359 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018360 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018361 return NULL;
18362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018363 if (_n == _children_capacity) {
18364 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018365 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18366 if (!_new_children) {
18367 p->error_indicator = 1;
18368 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018369 return NULL;
18370 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018371 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018373 _children[_n++] = _res;
18374 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018376 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018378 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18379 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018380 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018381 p->error_indicator = 1;
18382 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018383 return NULL;
18384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018385 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18386 PyMem_Free(_children);
18387 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
18388 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018389}
18390
Guido van Rossum3941d972020-05-01 09:42:03 -070018391// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018392static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018393_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018394{
18395 if (p->error_indicator) {
18396 return NULL;
18397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018398 asdl_seq * _res = NULL;
18399 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018400 { // del_target _loop0_122
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018401 if (p->error_indicator) {
18402 return NULL;
18403 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018404 expr_ty elem;
18405 asdl_seq * seq;
18406 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018407 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018408 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018409 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018410 )
18411 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018412 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018413 goto done;
18414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018415 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018417 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018418 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018419 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018420}
18421
Guido van Rossum3941d972020-05-01 09:42:03 -070018422// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018423static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018424_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018425{
18426 if (p->error_indicator) {
18427 return NULL;
18428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018429 void *_res = NULL;
18430 int _mark = p->mark;
18431 int _start_mark = p->mark;
18432 void **_children = PyMem_Malloc(sizeof(void *));
18433 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018434 p->error_indicator = 1;
18435 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018436 return NULL;
18437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018438 ssize_t _children_capacity = 1;
18439 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018440 { // ',' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018441 if (p->error_indicator) {
18442 return NULL;
18443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018444 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018445 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018446 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018447 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018448 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018449 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018450 )
18451 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018452 _res = elem;
18453 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018454 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018455 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018456 return NULL;
18457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018458 if (_n == _children_capacity) {
18459 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018460 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18461 if (!_new_children) {
18462 p->error_indicator = 1;
18463 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018464 return NULL;
18465 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018466 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018468 _children[_n++] = _res;
18469 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018473 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18474 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018475 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018476 p->error_indicator = 1;
18477 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018478 return NULL;
18479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018480 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18481 PyMem_Free(_children);
18482 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
18483 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018484}
18485
Guido van Rossum3941d972020-05-01 09:42:03 -070018486// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018487static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018488_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018489{
18490 if (p->error_indicator) {
18491 return NULL;
18492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018493 asdl_seq * _res = NULL;
18494 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018495 { // target _loop0_124
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018496 if (p->error_indicator) {
18497 return NULL;
18498 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018499 expr_ty elem;
18500 asdl_seq * seq;
18501 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018502 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018503 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018504 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018505 )
18506 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018507 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018508 goto done;
18509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018510 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018512 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018513 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018514 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018515}
18516
Guido van Rossum3941d972020-05-01 09:42:03 -070018517// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018518static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018519_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018520{
18521 if (p->error_indicator) {
18522 return NULL;
18523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018524 void * _res = NULL;
18525 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018526 { // args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018527 if (p->error_indicator) {
18528 return NULL;
18529 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018530 expr_ty args_var;
18531 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018532 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018533 )
18534 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018535 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018536 goto done;
18537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018538 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018539 }
18540 { // expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018541 if (p->error_indicator) {
18542 return NULL;
18543 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018544 expr_ty expression_var;
18545 asdl_seq* for_if_clauses_var;
18546 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018547 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018548 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018549 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018550 )
18551 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018552 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018553 goto done;
18554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018555 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018557 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018558 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018559 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018560}
18561
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018562// _loop0_126: star_named_expressions
18563static asdl_seq *
18564_loop0_126_rule(Parser *p)
18565{
18566 if (p->error_indicator) {
18567 return NULL;
18568 }
18569 void *_res = NULL;
18570 int _mark = p->mark;
18571 int _start_mark = p->mark;
18572 void **_children = PyMem_Malloc(sizeof(void *));
18573 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018574 p->error_indicator = 1;
18575 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018576 return NULL;
18577 }
18578 ssize_t _children_capacity = 1;
18579 ssize_t _n = 0;
18580 { // star_named_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018581 if (p->error_indicator) {
18582 return NULL;
18583 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018584 asdl_seq* star_named_expressions_var;
18585 while (
18586 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
18587 )
18588 {
18589 _res = star_named_expressions_var;
18590 if (_n == _children_capacity) {
18591 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018592 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18593 if (!_new_children) {
18594 p->error_indicator = 1;
18595 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018596 return NULL;
18597 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018598 _children = _new_children;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018599 }
18600 _children[_n++] = _res;
18601 _mark = p->mark;
18602 }
18603 p->mark = _mark;
18604 }
18605 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18606 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018607 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018608 p->error_indicator = 1;
18609 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018610 return NULL;
18611 }
18612 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18613 PyMem_Free(_children);
18614 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
18615 return _seq;
18616}
18617
18618// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018619static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018620_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018621{
18622 if (p->error_indicator) {
18623 return NULL;
18624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018625 void * _res = NULL;
18626 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018627 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018628 if (p->error_indicator) {
18629 return NULL;
18630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018631 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018632 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018633 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018634 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018636 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018637 )
18638 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018639 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018640 goto done;
18641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018642 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018644 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018645 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018646 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018647}
18648
Pablo Galindo16ab0702020-05-15 02:04:52 +010018649// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018650static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018651_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018652{
18653 if (p->error_indicator) {
18654 return NULL;
18655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018656 void * _res = NULL;
18657 int _mark = p->mark;
Pablo Galindo16ab0702020-05-15 02:04:52 +010018658 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018659 if (p->error_indicator) {
18660 return NULL;
18661 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018662 expr_ty yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018663 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018664 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018665 )
18666 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018667 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018668 goto done;
18669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018670 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018671 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018672 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018673 if (p->error_indicator) {
18674 return NULL;
18675 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018676 expr_ty star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018677 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018678 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018679 )
18680 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018681 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018682 goto done;
18683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018684 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018686 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018687 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018688 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018689}
18690
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018691// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018692static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018693_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018694{
18695 if (p->error_indicator) {
18696 return NULL;
18697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018698 void * _res = NULL;
18699 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018700 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018701 if (p->error_indicator) {
18702 return NULL;
18703 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018704 expr_ty yield_expr_var;
18705 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018706 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018707 )
18708 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018709 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018710 goto done;
18711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018712 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018713 }
18714 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018715 if (p->error_indicator) {
18716 return NULL;
18717 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018718 expr_ty star_expressions_var;
18719 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018720 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018721 )
18722 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018723 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018724 goto done;
18725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018726 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018728 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018729 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018730 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018731}
18732
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018733// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018734static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018735_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018736{
18737 if (p->error_indicator) {
18738 return NULL;
18739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018740 void * _res = NULL;
18741 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018742 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018743 if (p->error_indicator) {
18744 return NULL;
18745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018746 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018747 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018748 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018749 )
18750 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018751 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018752 goto done;
18753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018754 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018755 }
18756 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018757 if (p->error_indicator) {
18758 return NULL;
18759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018760 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018761 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018762 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018763 )
18764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018765 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018766 goto done;
18767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018768 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018769 }
18770 { // '{'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018771 if (p->error_indicator) {
18772 return NULL;
18773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018774 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018775 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018776 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018777 )
18778 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018779 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018780 goto done;
18781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018782 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018784 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018785 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018786 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018787}
18788
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018789// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018790static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018791_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018792{
18793 if (p->error_indicator) {
18794 return NULL;
18795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018796 void *_res = NULL;
18797 int _mark = p->mark;
18798 int _start_mark = p->mark;
18799 void **_children = PyMem_Malloc(sizeof(void *));
18800 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018801 p->error_indicator = 1;
18802 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018803 return NULL;
18804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018805 ssize_t _children_capacity = 1;
18806 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018807 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018808 if (p->error_indicator) {
18809 return NULL;
18810 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018811 arg_ty param_no_default_var;
18812 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018813 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018814 )
18815 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018816 _res = param_no_default_var;
18817 if (_n == _children_capacity) {
18818 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018819 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18820 if (!_new_children) {
18821 p->error_indicator = 1;
18822 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018823 return NULL;
18824 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018825 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018827 _children[_n++] = _res;
18828 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018830 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018832 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18833 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018834 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018835 p->error_indicator = 1;
18836 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018837 return NULL;
18838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018839 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18840 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018841 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018842 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018843}
18844
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018845// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018846static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018847_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018848{
18849 if (p->error_indicator) {
18850 return NULL;
18851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018852 void * _res = NULL;
18853 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018854 { // slash_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018855 if (p->error_indicator) {
18856 return NULL;
18857 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018858 SlashWithDefault* slash_with_default_var;
18859 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018860 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018861 )
18862 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018863 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018864 goto done;
18865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018867 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018868 { // param_with_default+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018869 if (p->error_indicator) {
18870 return NULL;
18871 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018872 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018873 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018874 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018875 )
18876 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018877 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018878 goto done;
18879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018880 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018882 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018883 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018884 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018885}
18886
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018887// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018888static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018889_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018890{
18891 if (p->error_indicator) {
18892 return NULL;
18893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018894 void * _res = NULL;
18895 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018896 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018897 if (p->error_indicator) {
18898 return NULL;
18899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018900 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018901 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018902 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018903 )
18904 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018905 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018906 goto done;
18907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018908 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018909 }
18910 { // ',' (')' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018911 if (p->error_indicator) {
18912 return NULL;
18913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018914 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018915 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018916 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018917 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018918 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018919 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018920 )
18921 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018922 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018923 goto done;
18924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018925 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018927 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018928 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018929 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018930}
18931
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018932// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018933static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018934_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018935{
18936 if (p->error_indicator) {
18937 return NULL;
18938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018939 void * _res = NULL;
18940 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018941 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018942 if (p->error_indicator) {
18943 return NULL;
18944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018945 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018946 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018947 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018948 )
18949 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018950 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018951 goto done;
18952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018953 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018954 }
18955 { // ',' (':' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018956 if (p->error_indicator) {
18957 return NULL;
18958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018959 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018960 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018961 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018962 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018963 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018964 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018965 )
18966 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018967 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018968 goto done;
18969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018970 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018972 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018973 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018974 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018975}
18976
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018977// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018978static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018979_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018980{
18981 if (p->error_indicator) {
18982 return NULL;
18983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018984 void * _res = NULL;
18985 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018986 { // star_targets '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018987 if (p->error_indicator) {
18988 return NULL;
18989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018990 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018991 expr_ty z;
18992 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018993 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018994 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018995 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018996 )
18997 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018998 _res = z;
18999 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019000 p->error_indicator = 1;
19001 return NULL;
19002 }
19003 goto done;
19004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019005 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019007 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019008 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019009 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019010}
19011
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019012// _tmp_136: '.' | '...'
19013static void *
19014_tmp_136_rule(Parser *p)
19015{
19016 if (p->error_indicator) {
19017 return NULL;
19018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019019 void * _res = NULL;
19020 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019021 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019022 if (p->error_indicator) {
19023 return NULL;
19024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019025 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019026 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019027 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019028 )
19029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019030 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019031 goto done;
19032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019033 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019034 }
19035 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019036 if (p->error_indicator) {
19037 return NULL;
19038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019039 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019040 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019041 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019042 )
19043 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019044 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019045 goto done;
19046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019047 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019049 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019050 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019051 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019052}
19053
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019054// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019055static void *
19056_tmp_137_rule(Parser *p)
19057{
19058 if (p->error_indicator) {
19059 return NULL;
19060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019061 void * _res = NULL;
19062 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019063 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019064 if (p->error_indicator) {
19065 return NULL;
19066 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019067 Token * _literal;
19068 if (
19069 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
19070 )
19071 {
19072 _res = _literal;
19073 goto done;
19074 }
19075 p->mark = _mark;
19076 }
19077 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019078 if (p->error_indicator) {
19079 return NULL;
19080 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019081 Token * _literal;
19082 if (
19083 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
19084 )
19085 {
19086 _res = _literal;
19087 goto done;
19088 }
19089 p->mark = _mark;
19090 }
19091 _res = NULL;
19092 done:
19093 return _res;
19094}
19095
19096// _tmp_138: '@' named_expression NEWLINE
19097static void *
19098_tmp_138_rule(Parser *p)
19099{
19100 if (p->error_indicator) {
19101 return NULL;
19102 }
19103 void * _res = NULL;
19104 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019105 { // '@' named_expression NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019106 if (p->error_indicator) {
19107 return NULL;
19108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019109 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019110 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010019111 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019112 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019113 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019114 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019115 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019116 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019117 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019118 )
19119 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019120 _res = f;
19121 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019122 p->error_indicator = 1;
19123 return NULL;
19124 }
19125 goto done;
19126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019127 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019129 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019130 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019131 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019132}
19133
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019134// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019135static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019136_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019137{
19138 if (p->error_indicator) {
19139 return NULL;
19140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019141 void * _res = NULL;
19142 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019143 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019144 if (p->error_indicator) {
19145 return NULL;
19146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019147 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019148 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019149 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019150 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019151 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019152 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019153 )
19154 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019155 _res = c;
19156 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019157 p->error_indicator = 1;
19158 return NULL;
19159 }
19160 goto done;
19161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019162 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019164 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019165 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019166 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019167}
19168
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019169// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019170static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019171_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019172{
19173 if (p->error_indicator) {
19174 return NULL;
19175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019176 void * _res = NULL;
19177 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019178 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019179 if (p->error_indicator) {
19180 return NULL;
19181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019182 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019183 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019184 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019185 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019186 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019187 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019188 )
19189 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019190 _res = c;
19191 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019192 p->error_indicator = 1;
19193 return NULL;
19194 }
19195 goto done;
19196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019197 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019199 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019200 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019201 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019202}
19203
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019204// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019205static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019206_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019207{
19208 if (p->error_indicator) {
19209 return NULL;
19210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019211 void * _res = NULL;
19212 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019213 { // 'or' conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019214 if (p->error_indicator) {
19215 return NULL;
19216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019217 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019218 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019219 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019220 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019221 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019222 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019223 )
19224 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019225 _res = c;
19226 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019227 p->error_indicator = 1;
19228 return NULL;
19229 }
19230 goto done;
19231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019232 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019234 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019235 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019236 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019237}
19238
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019239// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019240static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019241_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019242{
19243 if (p->error_indicator) {
19244 return NULL;
19245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019246 void * _res = NULL;
19247 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019248 { // 'and' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019249 if (p->error_indicator) {
19250 return NULL;
19251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019252 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019253 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019254 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019255 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019256 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019257 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019258 )
19259 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019260 _res = c;
19261 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019262 p->error_indicator = 1;
19263 return NULL;
19264 }
19265 goto done;
19266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019267 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019269 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019270 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019271 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019272}
19273
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019274// _tmp_143: 'if' disjunction
19275static void *
19276_tmp_143_rule(Parser *p)
19277{
19278 if (p->error_indicator) {
19279 return NULL;
19280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019281 void * _res = NULL;
19282 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019283 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019284 if (p->error_indicator) {
19285 return NULL;
19286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019287 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019288 expr_ty z;
19289 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019290 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019291 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019292 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019293 )
19294 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019295 _res = z;
19296 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019297 p->error_indicator = 1;
19298 return NULL;
19299 }
19300 goto done;
19301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019302 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019304 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019305 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019306 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019307}
19308
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019309// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019310static void *
19311_tmp_144_rule(Parser *p)
19312{
19313 if (p->error_indicator) {
19314 return NULL;
19315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019316 void * _res = NULL;
19317 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019318 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019319 if (p->error_indicator) {
19320 return NULL;
19321 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019322 Token * _keyword;
19323 expr_ty z;
19324 if (
19325 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
19326 &&
19327 (z = disjunction_rule(p)) // disjunction
19328 )
19329 {
19330 _res = z;
19331 if (_res == NULL && PyErr_Occurred()) {
19332 p->error_indicator = 1;
19333 return NULL;
19334 }
19335 goto done;
19336 }
19337 p->mark = _mark;
19338 }
19339 _res = NULL;
19340 done:
19341 return _res;
19342}
19343
19344// _tmp_145: ',' star_target
19345static void *
19346_tmp_145_rule(Parser *p)
19347{
19348 if (p->error_indicator) {
19349 return NULL;
19350 }
19351 void * _res = NULL;
19352 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019353 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019354 if (p->error_indicator) {
19355 return NULL;
19356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019357 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019358 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019359 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019360 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019361 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019362 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019363 )
19364 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019365 _res = c;
19366 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019367 p->error_indicator = 1;
19368 return NULL;
19369 }
19370 goto done;
19371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019372 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019374 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019375 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019376 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019377}
19378
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019379// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019380static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019381_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070019382{
19383 if (p->error_indicator) {
19384 return NULL;
19385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019386 void *_res = NULL;
19387 int _mark = p->mark;
19388 int _start_mark = p->mark;
19389 void **_children = PyMem_Malloc(sizeof(void *));
19390 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019391 p->error_indicator = 1;
19392 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019393 return NULL;
19394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019395 ssize_t _children_capacity = 1;
19396 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070019397 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019398 if (p->error_indicator) {
19399 return NULL;
19400 }
Guido van Rossumc001c092020-04-30 12:12:19 -070019401 NameDefaultPair* param_with_default_var;
19402 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019403 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070019404 )
19405 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019406 _res = param_with_default_var;
19407 if (_n == _children_capacity) {
19408 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019409 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19410 if (!_new_children) {
19411 p->error_indicator = 1;
19412 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019413 return NULL;
19414 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019415 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070019416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019417 _children[_n++] = _res;
19418 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019420 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019422 if (_n == 0 || p->error_indicator) {
19423 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070019424 return NULL;
19425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019426 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19427 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019428 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019429 p->error_indicator = 1;
19430 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019431 return NULL;
19432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019433 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19434 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019435 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019436 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070019437}
19438
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019439// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019440static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019441_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019442{
19443 if (p->error_indicator) {
19444 return NULL;
19445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019446 void * _res = NULL;
19447 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019448 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019449 if (p->error_indicator) {
19450 return NULL;
19451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019452 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019453 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019454 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019455 )
19456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019457 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019458 goto done;
19459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019460 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019461 }
19462 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019463 if (p->error_indicator) {
19464 return NULL;
19465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019466 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019467 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019468 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019469 )
19470 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019471 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019472 goto done;
19473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019474 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019476 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019477 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019478 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019479}
19480
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019481// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019482static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019483_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019484{
19485 if (p->error_indicator) {
19486 return NULL;
19487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019488 void * _res = NULL;
19489 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019490 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019491 if (p->error_indicator) {
19492 return NULL;
19493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019494 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019495 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019496 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019497 )
19498 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019499 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019500 goto done;
19501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019502 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019503 }
19504 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019505 if (p->error_indicator) {
19506 return NULL;
19507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019508 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019509 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019510 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019511 )
19512 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019513 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019514 goto done;
19515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019516 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019518 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019519 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019520 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019521}
19522
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019523void *
19524_PyPegen_parse(Parser *p)
19525{
19526 // Initialize keywords
19527 p->keywords = reserved_keywords;
19528 p->n_keyword_lists = n_keyword_lists;
19529
19530 // Run parser
19531 void *result = NULL;
19532 if (p->start_rule == Py_file_input) {
19533 result = file_rule(p);
19534 } else if (p->start_rule == Py_single_input) {
19535 result = interactive_rule(p);
19536 } else if (p->start_rule == Py_eval_input) {
19537 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070019538 } else if (p->start_rule == Py_func_type_input) {
19539 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019540 } else if (p->start_rule == Py_fstring_input) {
19541 result = fstring_rule(p);
19542 }
19543
19544 return result;
19545}
19546
19547// The end